From ae7550c5af7a0832e69bcc6edbfa637d2dc67655 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Fri, 5 Apr 2019 15:10:14 +0300 Subject: [PATCH] Move out JVM debugger functionality --- build.gradle.kts | 5 +- .../kotlin/backend/common/CollectionUtil.kt | 16 +++ .../backend/common/SimpleMemberScope.kt | 36 +++++++ .../jetbrains/kotlin/backend/common/Utils.kt | 10 -- .../kotlin/backend/common/lower/LowerUtils.kt | 29 ----- idea/build.gradle.kts | 6 +- idea/idea-core/build.gradle.kts | 1 + .../idea/core}/KotlinFileTypeFactory.java | 3 +- .../CompletionInformationProvider.kt | 4 + ...otlinExpressionSurroundDescriptorBase.java | 29 +++++ .../KotlinExpressionSurrounder.java | 19 +--- .../surroundWith/KotlinSurrounderUtils.java | 19 +--- .../kotlin/idea/core/util/AttachmentUtils.kt} | 25 +---- .../idea/core/util}/CodeInsightUtils.java | 17 +-- .../idea/core/util/PhysicalFileSystemUtils.kt | 26 +++++ .../kotlin/idea/core/util}/ProgressUtil.kt | 17 +-- .../kotlin/idea/core/util/PsiLinesUtils.kt | 55 ++++++++++ .../kotlin/idea/core/util/RangeUtils.kt | 31 ++++++ .../idea/core/util/RuntimeLibraryUtils.kt | 22 ++++ .../kotlin/idea/core/util/UiUtils.kt} | 4 +- .../configuration/gradleModuleBuilderUtils.kt | 2 +- idea/idea-j2k/build.gradle.kts | 14 +++ .../idea/j2k/IdeaJavaToKotlinServices.kt | 0 .../kotlin/idea/j2k/IdeaReferenceSearcher.kt | 0 .../idea/j2k/IdeaResolverForConverter.kt | 0 .../org/jetbrains/kotlin/idea/j2k/J2KUtils.kt | 40 +++++++ .../kotlin/idea/j2k/J2kPostProcessings.kt | 26 +++++ .../kotlin/idea/j2k/J2kPostProcessor.kt | 7 +- .../idea/j2k/JavaToKotlinConverterFactory.kt | 0 .../idea/j2k/OldJ2kConverterExtension.kt} | 0 idea/idea-jvm/build.gradle.kts | 1 - .../ConfigureKotlinInProjectUtils.kt | 2 +- .../compilation/CompiledDataDescriptor.kt | 48 --------- .../idea/framework/ui/CopyIntoPanel.java | 4 +- .../idea/injection/KotlinLanguageInjector.kt | 2 +- .../kotlin/idea/scratch/KtScratchFile.kt | 6 +- .../AbstractKotlinMavenInspectionTest.kt | 2 +- .../idea/maven/KotlinMavenImporterTest.kt | 2 +- idea/{ => jvm-debugger}/eval4j/ReadMe.md | 0 .../eval4j/build.gradle.kts | 0 .../src/org/jetbrains/eval4j/interpreter.kt | 0 .../org/jetbrains/eval4j/interpreterLoop.kt | 0 .../src/org/jetbrains/eval4j/jdi/jdiEval.kt | 0 .../src/org/jetbrains/eval4j/jdi/jdiValues.kt | 0 .../src/org/jetbrains/eval4j/members.kt | 0 .../eval4j/src/org/jetbrains/eval4j/values.kt | 0 .../jetbrains/eval4j/jdi/test/Debugee.java | 0 .../org/jetbrains/eval4j/jdi/test/jdiTest.kt | 0 .../jetbrains/eval4j/test/ArrayHelper.java | 0 .../jetbrains/eval4j/test/BaseTestData.java | 0 .../org/jetbrains/eval4j/test/Eval4jTest.java | 0 .../eval4j/test/IgnoreInReflectionTests.java | 0 .../org/jetbrains/eval4j/test/TestData.java | 0 .../test/org/jetbrains/eval4j/test/main.kt | 0 .../org/jetbrains/eval4j/test/suiteBuilder.kt | 0 .../test/org/jetbrains/eval4j/test/util.kt | 0 .../jvm-debugger-core/build.gradle.kts | 24 +++++ .../debugger/DebuggerClassNameProvider.kt | 0 .../idea/debugger/DelegateSourcePosition.kt | 0 .../DiagnosticSuppressorForDebugger.kt | 0 .../debugger/InlineCallableUsagesSearcher.kt | 0 ...inAlternativeSourceNotificationProvider.kt | 0 ...KotlinCoroutinesAsyncStackTraceProvider.kt | 1 - ...inCoroutinesAsyncStackTraceProviderBase.kt | 0 ...routinesAsyncStackTraceProviderBase.kt.182 | 0 .../idea/debugger/KotlinDebuggerSettings.kt | 0 ...legatedPropertyRendererConfigurableUi.form | 0 ...legatedPropertyRendererConfigurableUi.java | 0 .../KotlinFrameExtraVariablesProvider.kt | 6 +- .../debugger/KotlinJavaScriptDebugAware.java | 0 .../idea/debugger/KotlinPositionManager.kt | 11 +- .../KotlinPositionManagerFactory.java | 0 .../KotlinSourcePositionHighlighter.kt | 0 .../debugger/KotlinSourcePositionProvider.kt | 20 ++-- .../kotlin/idea/debugger/KotlinStackFrame.kt | 25 +++-- .../debugger/ToggleKotlinVariablesView.kt | 2 +- .../KotlinBreakpointFiltersPanel.form | 0 .../KotlinBreakpointFiltersPanel.java | 0 .../KotlinBreakpointHandlerFactory.kt | 0 .../breakpoints/KotlinFieldBreakpoint.kt | 0 .../KotlinFieldBreakpointPropertiesPanel.kt | 0 .../breakpoints/KotlinFieldBreakpointType.kt | 0 .../breakpoints/KotlinLineBreakpoint.kt | 0 .../breakpoints/KotlinLineBreakpointType.java | 0 .../KotlinPropertyBreakpointProperties.kt | 0 .../breakpoints/breakpointTypeUtils.kt | 4 +- .../dialog/AddFieldBreakpointDialog.form | 0 .../dialog/AddFieldBreakpointDialog.java | 4 +- .../dialog/fieldBreakpointDialogUtil.kt | 0 .../kotlin/idea/debugger/debuggerUtil.kt | 36 +------ .../evaluate/KotlinRuntimeTypeEvaluator.kt | 102 ++++++++++++++++++ .../debugger/filter/DebuggerFiltersUtil.kt | 0 ...inDebuggerInternalClassesFilterProvider.kt | 0 .../KotlinSyntheticTypeComponentProvider.kt | 0 .../DelegatedPropertyFieldDescriptor.kt | 0 ...otlinClassWithDelegatedPropertyRenderer.kt | 0 .../stepping/DebugProcessImplHelper.java | 0 .../stepping/DebuggerSteppingHelper.java | 0 .../stepping/KotlinBasicStepMethodFilter.kt | 0 .../stepping/KotlinLambdaMethodFilter.kt | 2 +- .../KotlinLambdaSmartStepIntoTarget.kt | 0 .../KotlinMethodSmartStepIntoTarget.kt | 0 .../stepping/KotlinSimpleGetterProvider.kt | 0 .../stepping/KotlinSmartStepIntoHandler.kt | 2 +- .../stepping/KotlinStepActionFactory.kt | 0 .../stepping/KotlinStepOverInlineFilter.kt | 0 .../KotlinStepOverInlinedLinesHint.kt | 0 .../stepping/KotlinSteppingCommandProvider.kt | 6 +- .../KotlinSteppingConfigurableUi.form | 0 .../KotlinSteppingConfigurableUi.java | 0 .../KotlinSuspendCallStepOverFilter.kt | 0 .../stepping/RequestHintWithMethodFilter.kt | 0 .../jvm-debugger-evaluation/build.gradle.kts | 21 ++++ ...uggerFieldCompletionInformationProvider.kt | 0 ...DebuggerFieldExpressionCodegenExtension.kt | 0 ...buggerFieldKotlinIndicesHelperExtension.kt | 0 .../DebuggerFieldSyntheticScopeProvider.kt | 0 .../evaluate/KotlinCodeFragmentFactory.kt | 49 ++------- .../evaluate/KotlinEvaluatorBuilder.kt | 75 ++++++------- .../evaluate/KotlinRuntimeTypeEvaluator.kt | 1 + .../AbstractAndroidClassLoadingAdapter.kt | 0 .../evaluate/classLoading/AndroidDexer.kt | 0 .../AndroidOClassLoadingAdapter.kt | 0 .../classLoading/ClassLoadingAdapter.kt | 1 - .../OrdinaryClassLoadingAdapter.kt | 0 .../compilation/CodeFragmentCompiler.kt | 7 +- .../CodeFragmentParameterAnalyzer.kt | 23 ---- .../DebugLabelPropertyDescriptorProvider.kt | 4 +- .../debugger/evaluate/compilingEvaluator.kt | 0 ...nDebuggerExpressionSurroundDescriptor.java | 7 +- .../KotlinRuntimeTypeCastSurrounder.kt | 6 +- .../variables/EvaluatorValueConverter.kt | 0 .../evaluate/variables/VariableFinder.kt | 55 +--------- .../jvm-debugger-sequence/build.gradle.kts | 20 ++++ .../KotlinCollectionLibrarySupport.kt | 0 .../KotlinCollectionSupportProvider.kt | 0 .../JavaStandardLibrarySupportProvider.kt | 0 .../java/StreamExLibrarySupportProvider.kt | 0 .../sequence/KotlinSequenceSupportProvider.kt | 0 .../lib/sequence/KotlinSequencesSupport.kt | 0 .../psi/CallCheckerWithNameHeuristics.kt | 0 .../sequence/psi/CallTypeExtractor.kt | 0 .../debugger/sequence/psi/KotlinPsiUtil.kt | 0 .../sequence/psi/StreamCallChecker.kt | 0 .../collections/CollectionChainTransformer.kt | 0 .../KotlinCollectionChainBuilder.kt | 0 .../KotlinCollectionsTypeExtractor.kt | 0 .../psi/impl/KotlinChainBuilderBase.kt | 0 .../psi/impl/KotlinChainTransformerImpl.kt | 0 .../psi/impl/PackageBasedCallChecker.kt | 0 .../psi/impl/TerminatedChainBuilder.kt | 0 .../psi/java/JavaStreamChainTypeExtractor.kt | 0 .../psi/java/StandardLibraryCallChecker.kt | 0 .../sequence/psi/java/StreamExCallChecker.kt | 0 .../psi/sequence/SequenceCallChecker.kt | 0 .../SequenceCallCheckerWithNameHeuristics.kt | 0 .../psi/sequence/SequenceTypeExtractor.kt | 0 .../sequence/resolve/ChunkedResolver.kt | 0 .../sequence/resolve/FilteredMapResolver.kt | 0 .../sequence/resolve/WindowedResolver.kt | 0 .../sequence/trace/dsl/JavaPeekCallFactory.kt | 0 .../sequence/trace/dsl/KotlinArrayVariable.kt | 0 .../trace/dsl/KotlinAssignmentStatement.kt | 0 .../sequence/trace/dsl/KotlinCodeBlock.kt | 0 .../dsl/KotlinCollectionsPeekCallFactory.kt | 0 .../sequence/trace/dsl/KotlinForEachLoop.kt | 0 .../sequence/trace/dsl/KotlinForLoop.kt | 0 .../sequence/trace/dsl/KotlinForLoopBody.kt | 0 .../sequence/trace/dsl/KotlinIfBranch.kt | 0 .../sequence/trace/dsl/KotlinLambda.kt | 0 .../sequence/trace/dsl/KotlinLambdaBody.kt | 0 .../sequence/trace/dsl/KotlinListVariable.kt | 0 .../sequence/trace/dsl/KotlinMapVariable.kt | 0 .../sequence/trace/dsl/KotlinSequenceTypes.kt | 0 .../trace/dsl/KotlinStatementFactory.kt | 0 .../sequence/trace/dsl/KotlinTryBlock.kt | 0 .../trace/dsl/KotlinVariableDeclaration.kt | 0 .../sequence/trace/dsl/PeekCallFactory.kt | 0 .../impl/KotlinTraceExpressionBuilder.kt | 0 .../sequence/trace/impl/handler/CallUtils.kt | 0 .../sequence/trace/impl/handler/OnEachCall.kt | 0 .../collections/BothSemanticHandlerWrapper.kt | 0 .../collections/BothSemanticsHandler.kt | 0 .../collections/CollectionHandlerBase.kt | 0 .../CollectionIntermediateHandler.kt | 0 .../CollectionTerminatorHandler.kt | 0 .../handler/collections/FilterCallHandler.kt | 0 .../sequence/FilterIsInstanceHandler.kt | 0 .../sequence/KotlinDistinctByHandler.kt | 0 .../impl/interpret/FilterTraceInterpreter.kt | 0 .../trace/impl/interpret/InterpreterUtil.kt | 0 .../trace/impl/interpret/ValuesOrder.kt | 0 .../jvm-debugger-util/build.gradle.kts | 22 ++++ .../idea/debugger/CodeFragmentContextUtils.kt | 50 +++++++++ .../kotlin/idea/debugger/CoroutineUtils.kt | 16 +++ .../kotlin/idea/debugger/DebuggerUtils.kt | 2 +- .../idea/debugger/FileRankingCalculator.kt | 2 +- .../kotlin/idea/debugger/InlineUtils.kt | 52 +++++++++ .../idea/debugger/KotlinEditorTextProvider.kt | 0 .../debugger/NoStrataPositionManagerHelper.kt | 11 +- .../kotlin/idea/debugger/TypeUtils.kt | 74 +++++++++++++ .../debugger/evaluate/ExecutionContext.kt | 0 .../debugger/evaluate/KotlinDebuggerCaches.kt | 2 +- .../evaluate/classLoading/ClassToLoad.kt | 3 +- .../compilation/CodeFragmentParameter.kt | 33 ++++++ .../compilation/CompiledDataDescriptor.kt | 23 ++++ .../kotlin/idea/debugger/safeUtil.kt | 0 .../kotlin/idea/debugger/smapUtil.kt | 0 .../idea/perf/WholeProjectInspectionTest.kt | 2 +- .../idea/perf/WholeProjectLightClassTest.kt | 2 +- .../perf/WholeProjectUltraLightClassTest.kt | 2 +- idea/resources/META-INF/jvm.xml | 6 +- idea/resources/META-INF/jvm.xml.182 | 6 +- idea/resources/META-INF/jvm.xml.183 | 6 +- idea/resources/META-INF/plugin-common.xml | 2 +- .../kotlin/idea/actions/JavaToKotlinAction.kt | 2 +- .../KotlinGenerateTestSupportActionBase.kt | 2 +- .../AbstractCompletionBenchmarkAction.kt | 4 +- .../benchmark/HighlightingBenchmarkAction.kt | 2 +- .../benchmark/LocalCompletionBenchmark.kt | 2 +- .../benchmark/TopLevelCompletionBenchmark.kt | 2 +- .../KotlinCopyPasteReferenceProcessor.kt | 6 +- .../surroundWith/MoveDeclarationsOutHelper.kt | 2 +- ...tlinControlFlowExpressionSurrounderBase.kt | 1 + .../KotlinExpressionSurroundDescriptor.java | 17 +-- .../expression/KotlinNotSurrounder.java | 1 + .../KotlinParenthesesSurrounder.java | 1 + .../KotlinStringTemplateSurrounder.java | 1 + .../expression/KotlinWhenSurrounder.java | 1 + .../KotlinWithIfExpressionSurrounder.kt | 3 +- .../KotlinFunctionLiteralSurrounder.java | 2 +- .../statement/KotlinIfSurrounderBase.java | 2 +- .../KotlinStatementSurroundDescriptor.java | 2 +- .../statement/KotlinStatementsSurrounder.java | 2 +- .../statement/KotlinTrySurrounderBase.java | 2 +- .../AbstractKotlinUpDownMover.java | 3 +- .../upDownMover/KotlinExpressionMover.java | 4 +- .../copy/ConvertJavaCopyPasteProcessor.kt | 2 + .../idea/conversion/copy/DataForConversion.kt | 3 + .../kotlin/idea/conversion/copy/RangeUtils.kt | 44 -------- .../kotlin/idea/editor/KotlinEnterHandler.kt | 2 +- .../KotlinMultilineStringEnterHandler.kt | 2 +- .../idea/facet/KotlinFacetEditorGeneralTab.kt | 2 +- ...tlinDefaultHighlightingSettingsProvider.kt | 2 +- .../idea/intentions/AddJvmStaticIntention.kt | 2 +- .../intentions/AddNameToArgumentIntention.kt | 4 +- .../AddNamesToFollowingArgumentsIntention.kt | 4 +- ...unctionTypeParameterToReceiverIntention.kt | 2 +- ...unctionTypeReceiverToParameterIntention.kt | 2 +- .../ConvertPropertyToFunctionIntention.kt | 2 +- .../ConvertSealedClassToEnumIntention.kt | 2 +- .../ImplementAbstractMemberIntention.kt | 2 +- .../intentions/ImportAllMembersIntention.kt | 2 +- ...MoveMemberOutOfCompanionObjectIntention.kt | 2 +- .../MoveMemberToCompanionObjectIntention.kt | 2 +- ...EmptyParenthesesFromLambdaCallIntention.kt | 2 +- .../idea/intentions/SplitIfIntention.kt | 4 +- ...s.kt => J2KPostProcessingRegistrarImpl.kt} | 5 - .../joinLines/JoinToStringTemplateHandler.kt | 2 +- .../custom/KotlinCodeHintsModel.kt | 2 +- .../quickfix/ChangeSuspendInHierarchyFix.kt | 2 +- .../InitializePropertyQuickFixFactory.kt | 2 +- .../callableBuilder/CallableBuilder.kt | 3 +- .../createClass/CreateClassFromUsageFix.kt | 2 +- .../CreateTypeParameterFromUsageFix.kt | 2 +- .../changeSignature/KotlinChangeInfo.kt | 3 +- .../KotlinChangeSignatureHandler.kt | 2 +- .../copy/CopyKotlinDeclarationsHandler.kt | 2 +- .../MoveDeclarationsIntentionAction.kt | 2 +- .../cutPaste/MoveDeclarationsPassFactory.kt | 2 +- .../cutPaste/MoveDeclarationsProcessor.kt | 4 +- .../idea/refactoring/elementSelectionUtils.kt | 2 +- .../extractClass/ExtractSuperRefactoring.kt | 2 +- .../ui/KotlinExtractSuperDialogBase.kt | 2 +- .../ExtractKotlinFunctionHandler.kt | 2 +- .../extractionEngine/extractorUtil.kt | 2 +- .../KotlinIntroduceImportAliasHandler.kt | 2 +- .../KotlinIntroduceParameterDialog.kt | 2 +- .../KotlinIntroduceParameterHandler.kt | 20 ++-- ...nIntroduceParameterMethodUsageProcessor.kt | 4 +- .../KotlinIntroducePropertyHandler.kt | 2 +- .../IntroduceTypeAliasHandler.kt | 4 +- .../KotlinIntroduceTypeParameterHandler.kt | 2 +- .../refactoring/introduce/introduceUtil.kt | 2 +- .../KotlinIntroduceVariableHandler.kt | 2 +- .../idea/refactoring/kotlinRefactoringUtil.kt | 78 -------------- .../changePackage/ChangePackageIntention.kt | 2 +- .../KotlinChangePackageRefactoring.kt | 2 +- ...KotlinAwareMoveFilesOrDirectoriesDialog.kt | 2 +- .../MoveKotlinTopLevelDeclarationsDialog.java | 13 +-- .../JavaToKotlinPreconversionPullUpHelper.kt | 4 +- .../pushDown/JavaToKotlinPushDownDelegate.kt | 4 +- .../pushDown/KotlinPushDownProcessor.kt | 2 +- ...tractReferenceSubstitutionRenameHandler.kt | 2 +- .../RenameBackingFieldReferenceHandler.kt | 2 +- .../rename/RenameDynamicMemberHandler.kt | 2 +- .../RenameOnSecondaryConstructorHandler.kt | 2 +- ...eSyntheticDeclarationByReferenceHandler.kt | 2 +- ...KotlinNonJvmSourceRootConverterProvider.kt | 2 +- .../KotlinCreateTestIntention.kt | 4 +- .../idea/versions/KotlinRuntimeLibraryUtil.kt | 8 -- .../complexBuildGradleKts/build.gradle.kts | 6 +- .../idea/AbstractExpressionSelectionTest.kt | 2 +- .../kotlin/idea/AbstractSmartSelectionTest.kt | 2 +- .../debugger/AbstractSmartStepIntoTest.kt | 2 +- ...AbstractEditorForEvaluateExpressionTest.kt | 11 +- .../CodeFragmentCompletionInLibraryTest.kt | 5 +- .../AbstractKotlinExceptionFilterTest.kt | 2 +- .../idea/filters/KotlinExceptionFilterTest.kt | 2 +- .../KotlinMultiModuleChangeSignatureTest.kt | 2 +- .../idea/refactoring/copy/AbstractCopyTest.kt | 2 +- .../introduce/AbstractExtractionTest.kt | 2 +- .../idea/refactoring/move/AbstractMoveTest.kt | 2 + .../move/MoveKotlinDeclarationsHandlerTest.kt | 4 +- .../nameSuggester/KotlinNameSuggesterTest.kt | 2 +- .../jetbrains/kotlin/nj2k/J2kPostProcessor.kt | 2 +- prepare/idea-plugin/build.gradle.kts | 7 +- settings.gradle | 7 +- 318 files changed, 1068 insertions(+), 723 deletions(-) create mode 100644 compiler/backend-common/src/org/jetbrains/kotlin/backend/common/CollectionUtil.kt create mode 100644 compiler/backend-common/src/org/jetbrains/kotlin/backend/common/SimpleMemberScope.kt rename idea/{src/org/jetbrains/kotlin/idea => idea-core/src/org/jetbrains/kotlin/idea/core}/KotlinFileTypeFactory.java (93%) rename idea/{idea-completion/src/org/jetbrains/kotlin/idea/completion => idea-core/src/org/jetbrains/kotlin/idea/core/extension}/CompletionInformationProvider.kt (89%) create mode 100644 idea/idea-core/src/org/jetbrains/kotlin/idea/core/surroundWith/KotlinExpressionSurroundDescriptorBase.java rename idea/{src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression => idea-core/src/org/jetbrains/kotlin/idea/core/surroundWith}/KotlinExpressionSurrounder.java (75%) rename idea/{src/org/jetbrains/kotlin/idea/codeInsight => idea-core/src/org/jetbrains/kotlin/idea/core}/surroundWith/KotlinSurrounderUtils.java (72%) rename idea/{src/org/jetbrains/kotlin/idea/util/attachment/attachmentUtils.kt => idea-core/src/org/jetbrains/kotlin/idea/core/util/AttachmentUtils.kt} (53%) rename idea/{src/org/jetbrains/kotlin/idea/codeInsight => idea-core/src/org/jetbrains/kotlin/idea/core/util}/CodeInsightUtils.java (95%) create mode 100644 idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/PhysicalFileSystemUtils.kt rename idea/{src/org/jetbrains/kotlin/idea => idea-core/src/org/jetbrains/kotlin/idea/core/util}/ProgressUtil.kt (64%) create mode 100644 idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/PsiLinesUtils.kt create mode 100644 idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/RangeUtils.kt create mode 100644 idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/RuntimeLibraryUtils.kt rename idea/{src/org/jetbrains/kotlin/idea/util/uiUtil.kt => idea-core/src/org/jetbrains/kotlin/idea/core/util/UiUtils.kt} (83%) create mode 100644 idea/idea-j2k/build.gradle.kts rename idea/{ => idea-j2k}/src/org/jetbrains/kotlin/idea/j2k/IdeaJavaToKotlinServices.kt (100%) rename idea/{ => idea-j2k}/src/org/jetbrains/kotlin/idea/j2k/IdeaReferenceSearcher.kt (100%) rename idea/{ => idea-j2k}/src/org/jetbrains/kotlin/idea/j2k/IdeaResolverForConverter.kt (100%) create mode 100644 idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/J2KUtils.kt create mode 100644 idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt rename idea/{ => idea-j2k}/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessor.kt (95%) rename idea/{ => idea-j2k}/src/org/jetbrains/kotlin/idea/j2k/JavaToKotlinConverterFactory.kt (100%) rename idea/{src/org/jetbrains/kotlin/idea/j2k/OldJ2kConveterExtension.kt => idea-j2k/src/org/jetbrains/kotlin/idea/j2k/OldJ2kConverterExtension.kt} (100%) delete mode 100644 idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CompiledDataDescriptor.kt rename idea/{ => jvm-debugger}/eval4j/ReadMe.md (100%) rename idea/{ => jvm-debugger}/eval4j/build.gradle.kts (100%) rename idea/{ => jvm-debugger}/eval4j/src/org/jetbrains/eval4j/interpreter.kt (100%) rename idea/{ => jvm-debugger}/eval4j/src/org/jetbrains/eval4j/interpreterLoop.kt (100%) rename idea/{ => jvm-debugger}/eval4j/src/org/jetbrains/eval4j/jdi/jdiEval.kt (100%) rename idea/{ => jvm-debugger}/eval4j/src/org/jetbrains/eval4j/jdi/jdiValues.kt (100%) rename idea/{ => jvm-debugger}/eval4j/src/org/jetbrains/eval4j/members.kt (100%) rename idea/{ => jvm-debugger}/eval4j/src/org/jetbrains/eval4j/values.kt (100%) rename idea/{ => jvm-debugger}/eval4j/test/org/jetbrains/eval4j/jdi/test/Debugee.java (100%) rename idea/{ => jvm-debugger}/eval4j/test/org/jetbrains/eval4j/jdi/test/jdiTest.kt (100%) rename idea/{ => jvm-debugger}/eval4j/test/org/jetbrains/eval4j/test/ArrayHelper.java (100%) rename idea/{ => jvm-debugger}/eval4j/test/org/jetbrains/eval4j/test/BaseTestData.java (100%) rename idea/{ => jvm-debugger}/eval4j/test/org/jetbrains/eval4j/test/Eval4jTest.java (100%) rename idea/{ => jvm-debugger}/eval4j/test/org/jetbrains/eval4j/test/IgnoreInReflectionTests.java (100%) rename idea/{ => jvm-debugger}/eval4j/test/org/jetbrains/eval4j/test/TestData.java (100%) rename idea/{ => jvm-debugger}/eval4j/test/org/jetbrains/eval4j/test/main.kt (100%) rename idea/{ => jvm-debugger}/eval4j/test/org/jetbrains/eval4j/test/suiteBuilder.kt (100%) rename idea/{ => jvm-debugger}/eval4j/test/org/jetbrains/eval4j/test/util.kt (100%) create mode 100644 idea/jvm-debugger/jvm-debugger-core/build.gradle.kts rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/DebuggerClassNameProvider.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/DelegateSourcePosition.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/DiagnosticSuppressorForDebugger.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/InlineCallableUsagesSearcher.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/KotlinAlternativeSourceNotificationProvider.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProvider.kt (98%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProviderBase.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProviderBase.kt.182 (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/KotlinDebuggerSettings.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.form (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.java (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/KotlinFrameExtraVariablesProvider.kt (97%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/KotlinJavaScriptDebugAware.java (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/KotlinPositionManager.kt (97%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/KotlinPositionManagerFactory.java (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/KotlinSourcePositionHighlighter.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/KotlinSourcePositionProvider.kt (89%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/KotlinStackFrame.kt (95%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/ToggleKotlinVariablesView.kt (97%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinBreakpointFiltersPanel.form (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinBreakpointFiltersPanel.java (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinBreakpointHandlerFactory.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpoint.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpointPropertiesPanel.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpointType.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinLineBreakpoint.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinLineBreakpointType.java (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinPropertyBreakpointProperties.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/breakpoints/breakpointTypeUtils.kt (97%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/AddFieldBreakpointDialog.form (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/AddFieldBreakpointDialog.java (98%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/fieldBreakpointDialogUtil.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/debuggerUtil.kt (91%) create mode 100644 idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinRuntimeTypeEvaluator.kt rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/filter/DebuggerFiltersUtil.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/filter/KotlinDebuggerInternalClassesFilterProvider.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/filter/KotlinSyntheticTypeComponentProvider.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/render/DelegatedPropertyFieldDescriptor.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/render/KotlinClassWithDelegatedPropertyRenderer.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/stepping/DebugProcessImplHelper.java (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/stepping/DebuggerSteppingHelper.java (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinBasicStepMethodFilter.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinLambdaMethodFilter.kt (98%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinLambdaSmartStepIntoTarget.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinMethodSmartStepIntoTarget.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSimpleGetterProvider.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSmartStepIntoHandler.kt (99%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinStepActionFactory.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinStepOverInlineFilter.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinStepOverInlinedLinesHint.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingCommandProvider.kt (99%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingConfigurableUi.form (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingConfigurableUi.java (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSuspendCallStepOverFilter.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-core}/src/org/jetbrains/kotlin/idea/debugger/stepping/RequestHintWithMethodFilter.kt (100%) create mode 100644 idea/jvm-debugger/jvm-debugger-evaluation/build.gradle.kts rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldCompletionInformationProvider.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldExpressionCodegenExtension.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldKotlinIndicesHelperExtension.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldSyntheticScopeProvider.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt (88%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluatorBuilder.kt (90%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinRuntimeTypeEvaluator.kt (98%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/AbstractAndroidClassLoadingAdapter.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/AndroidDexer.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/AndroidOClassLoadingAdapter.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/ClassLoadingAdapter.kt (98%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/OrdinaryClassLoadingAdapter.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentCompiler.kt (97%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentParameterAnalyzer.kt (96%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/DebugLabelPropertyDescriptorProvider.kt (98%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilingEvaluator.kt (100%) rename idea/{idea-jvm/src/org/jetbrains/kotlin/idea/debugger => jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate}/surroundWith/KotlinDebuggerExpressionSurroundDescriptor.java (77%) rename idea/{idea-jvm/src/org/jetbrains/kotlin/idea/debugger => jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate}/surroundWith/KotlinRuntimeTypeCastSurrounder.kt (93%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/variables/EvaluatorValueConverter.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-evaluation}/src/org/jetbrains/kotlin/idea/debugger/evaluate/variables/VariableFinder.kt (89%) create mode 100644 idea/jvm-debugger/jvm-debugger-sequence/build.gradle.kts rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/collections/KotlinCollectionLibrarySupport.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/collections/KotlinCollectionSupportProvider.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/java/JavaStandardLibrarySupportProvider.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/java/StreamExLibrarySupportProvider.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/sequence/KotlinSequenceSupportProvider.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/sequence/KotlinSequencesSupport.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/CallCheckerWithNameHeuristics.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/CallTypeExtractor.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/KotlinPsiUtil.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/StreamCallChecker.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/collections/CollectionChainTransformer.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/collections/KotlinCollectionChainBuilder.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/collections/KotlinCollectionsTypeExtractor.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/KotlinChainBuilderBase.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/KotlinChainTransformerImpl.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/PackageBasedCallChecker.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/TerminatedChainBuilder.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/java/JavaStreamChainTypeExtractor.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/java/StandardLibraryCallChecker.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/java/StreamExCallChecker.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/sequence/SequenceCallChecker.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/sequence/SequenceCallCheckerWithNameHeuristics.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/sequence/SequenceTypeExtractor.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/resolve/ChunkedResolver.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/resolve/FilteredMapResolver.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/resolve/WindowedResolver.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/JavaPeekCallFactory.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinArrayVariable.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinAssignmentStatement.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinCodeBlock.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinCollectionsPeekCallFactory.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinForEachLoop.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinForLoop.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinForLoopBody.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinIfBranch.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinLambda.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinLambdaBody.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinListVariable.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinMapVariable.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinSequenceTypes.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinStatementFactory.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinTryBlock.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinVariableDeclaration.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/PeekCallFactory.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/KotlinTraceExpressionBuilder.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/CallUtils.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/OnEachCall.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/BothSemanticHandlerWrapper.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/BothSemanticsHandler.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/CollectionHandlerBase.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/CollectionIntermediateHandler.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/CollectionTerminatorHandler.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/FilterCallHandler.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/sequence/FilterIsInstanceHandler.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/sequence/KotlinDistinctByHandler.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/interpret/FilterTraceInterpreter.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/interpret/InterpreterUtil.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-sequence}/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/interpret/ValuesOrder.kt (100%) create mode 100644 idea/jvm-debugger/jvm-debugger-util/build.gradle.kts create mode 100644 idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/CodeFragmentContextUtils.kt create mode 100644 idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/CoroutineUtils.kt rename idea/{idea-jvm => jvm-debugger/jvm-debugger-util}/src/org/jetbrains/kotlin/idea/debugger/DebuggerUtils.kt (99%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-util}/src/org/jetbrains/kotlin/idea/debugger/FileRankingCalculator.kt (99%) create mode 100644 idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/InlineUtils.kt rename idea/{idea-jvm => jvm-debugger/jvm-debugger-util}/src/org/jetbrains/kotlin/idea/debugger/KotlinEditorTextProvider.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-util}/src/org/jetbrains/kotlin/idea/debugger/NoStrataPositionManagerHelper.kt (96%) create mode 100644 idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/TypeUtils.kt rename idea/{idea-jvm => jvm-debugger/jvm-debugger-util}/src/org/jetbrains/kotlin/idea/debugger/evaluate/ExecutionContext.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-util}/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinDebuggerCaches.kt (99%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-util}/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/ClassToLoad.kt (87%) create mode 100644 idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentParameter.kt create mode 100644 idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CompiledDataDescriptor.kt rename idea/{idea-jvm => jvm-debugger/jvm-debugger-util}/src/org/jetbrains/kotlin/idea/debugger/safeUtil.kt (100%) rename idea/{idea-jvm => jvm-debugger/jvm-debugger-util}/src/org/jetbrains/kotlin/idea/debugger/smapUtil.kt (100%) delete mode 100644 idea/src/org/jetbrains/kotlin/idea/conversion/copy/RangeUtils.kt rename idea/src/org/jetbrains/kotlin/idea/j2k/{J2kPostProcessings.kt => J2KPostProcessingRegistrarImpl.kt} (99%) diff --git a/build.gradle.kts b/build.gradle.kts index e9ea1aadf67..e769e8e4895 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -596,7 +596,10 @@ tasks { ":idea:idea-maven:test", ":j2k:test", ":nj2k:test", - ":idea:eval4j:test" + ":idea:jvm-debugger:jvm-debugger-core:test", + ":idea:jvm-debugger:jvm-debugger-evaluation:test", + ":idea:jvm-debugger:jvm-debugger-sequence:test", + ":idea:jvm-debugger:eval4j:test" ) } diff --git a/compiler/backend-common/src/org/jetbrains/kotlin/backend/common/CollectionUtil.kt b/compiler/backend-common/src/org/jetbrains/kotlin/backend/common/CollectionUtil.kt new file mode 100644 index 00000000000..6f32fca05ea --- /dev/null +++ b/compiler/backend-common/src/org/jetbrains/kotlin/backend/common/CollectionUtil.kt @@ -0,0 +1,16 @@ +/* + * Copyright 2000-2019 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.backend.common + +fun Collection.atMostOne(): T? { + return when (this.size) { + 0 -> null + 1 -> this.iterator().next() + else -> throw IllegalArgumentException("Collection has more than one element.") + } +} + +inline fun Iterable.atMostOne(predicate: (T) -> Boolean): T? = this.filter(predicate).atMostOne() \ No newline at end of file diff --git a/compiler/backend-common/src/org/jetbrains/kotlin/backend/common/SimpleMemberScope.kt b/compiler/backend-common/src/org/jetbrains/kotlin/backend/common/SimpleMemberScope.kt new file mode 100644 index 00000000000..ca032bb8371 --- /dev/null +++ b/compiler/backend-common/src/org/jetbrains/kotlin/backend/common/SimpleMemberScope.kt @@ -0,0 +1,36 @@ +/* + * Copyright 2000-2019 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.backend.common + +import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.incremental.components.LookupLocation +import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter +import org.jetbrains.kotlin.resolve.scopes.MemberScopeImpl +import org.jetbrains.kotlin.utils.Printer + +class SimpleMemberScope(val members: List) : MemberScopeImpl() { + + override fun getContributedClassifier(name: Name, location: LookupLocation): ClassifierDescriptor? = + members.filterIsInstance() + .atMostOne { it.name == name } + + override fun getContributedVariables(name: Name, location: LookupLocation): Collection = + members.filterIsInstance() + .filter { it.name == name } + + override fun getContributedFunctions(name: Name, location: LookupLocation): Collection = + members.filterIsInstance() + .filter { it.name == name } + + override fun getContributedDescriptors( + kindFilter: DescriptorKindFilter, + nameFilter: (Name) -> Boolean + ): Collection = + members.filter { kindFilter.accepts(it) && nameFilter(it.name) } + + override fun printScopeStructure(p: Printer) = TODO("not implemented") +} diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/Utils.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/Utils.kt index 6fdb84152fc..d1b4903ce04 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/Utils.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/Utils.kt @@ -29,16 +29,6 @@ fun MutableList.pop() = this.removeAt(size - 1) fun MutableList.peek(): E? = if (size == 0) null else this[size - 1] -fun Collection.atMostOne(): T? { - return when (this.size) { - 0 -> null - 1 -> this.iterator().next() - else -> throw IllegalArgumentException("Collection has more than one element.") - } -} - -inline fun Iterable.atMostOne(predicate: (T) -> Boolean): T? = this.filter(predicate).atMostOne() - fun T.onlyIf(condition: T.()->Boolean, then: (T)->Unit): T { if (this.condition()) then(this) return this diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LowerUtils.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LowerUtils.kt index 1e0668b09c3..b58e8e58194 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LowerUtils.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LowerUtils.kt @@ -18,10 +18,8 @@ package org.jetbrains.kotlin.backend.common.lower import org.jetbrains.kotlin.backend.common.BackendContext import org.jetbrains.kotlin.backend.common.CommonBackendContext -import org.jetbrains.kotlin.backend.common.atMostOne import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl -import org.jetbrains.kotlin.incremental.components.LookupLocation import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrStatement import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET @@ -34,16 +32,12 @@ import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.types.IrSimpleType import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.classifierOrFail -import org.jetbrains.kotlin.ir.types.isAny import org.jetbrains.kotlin.ir.util.defaultType import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter -import org.jetbrains.kotlin.resolve.scopes.MemberScopeImpl -import org.jetbrains.kotlin.utils.Printer class IrLoweringContext(backendContext: BackendContext) : IrGeneratorContextBase(backendContext.irBuiltIns) @@ -166,29 +160,6 @@ open class IrBuildingTransformer(private val context: BackendContext) : IrElemen } } -class SimpleMemberScope(val members: List) : MemberScopeImpl() { - - override fun getContributedClassifier(name: Name, location: LookupLocation): ClassifierDescriptor? = - members.filterIsInstance() - .atMostOne { it.name == name } - - override fun getContributedVariables(name: Name, location: LookupLocation): Collection = - members.filterIsInstance() - .filter { it.name == name } - - override fun getContributedFunctions(name: Name, location: LookupLocation): Collection = - members.filterIsInstance() - .filter { it.name == name } - - override fun getContributedDescriptors( - kindFilter: DescriptorKindFilter, - nameFilter: (Name) -> Boolean - ): Collection = - members.filter { kindFilter.accepts(it) && nameFilter(it.name) } - - override fun printScopeStructure(p: Printer) = TODO("not implemented") -} - fun IrConstructor.callsSuper(irBuiltIns: IrBuiltIns): Boolean { val constructedClass = parent as IrClass val superClass = constructedClass.superTypes diff --git a/idea/build.gradle.kts b/idea/build.gradle.kts index 2308a61aa13..d589a43b5e8 100644 --- a/idea/build.gradle.kts +++ b/idea/build.gradle.kts @@ -31,8 +31,12 @@ dependencies { compile(projectRuntimeJar(":kotlin-daemon-client")) compile(project(":kotlin-compiler-runner")) { isTransitive = false } compile(project(":compiler:plugin-api")) - compile(project(":idea:eval4j")) + compile(project(":idea:jvm-debugger:jvm-debugger-util")) + compile(project(":idea:jvm-debugger:jvm-debugger-core")) + compile(project(":idea:jvm-debugger:jvm-debugger-evaluation")) + compile(project(":idea:jvm-debugger:jvm-debugger-sequence")) compile(project(":j2k")) + compile(project(":idea:idea-j2k")) compile(project(":idea:formatter")) compile(project(":idea:fir-view")) compile(project(":compiler:fir:fir2ir")) diff --git a/idea/idea-core/build.gradle.kts b/idea/idea-core/build.gradle.kts index 52b7c60beeb..59a473178f7 100644 --- a/idea/idea-core/build.gradle.kts +++ b/idea/idea-core/build.gradle.kts @@ -7,6 +7,7 @@ plugins { dependencies { compile(kotlinStdlib()) compileOnly(project(":kotlin-reflect-api")) + compile(project(":compiler:psi")) compile(project(":core:descriptors")) compile(project(":core:descriptors.jvm")) compile(project(":compiler:frontend")) diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinFileTypeFactory.java b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinFileTypeFactory.java similarity index 93% rename from idea/src/org/jetbrains/kotlin/idea/KotlinFileTypeFactory.java rename to idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinFileTypeFactory.java index ffbaf49c112..a61eda3e04f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/KotlinFileTypeFactory.java +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinFileTypeFactory.java @@ -14,12 +14,13 @@ * limitations under the License. */ -package org.jetbrains.kotlin.idea; +package org.jetbrains.kotlin.idea.core; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileTypeConsumer; import com.intellij.openapi.fileTypes.FileTypeFactory; import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.idea.KotlinFileType; import java.util.Arrays; import java.util.HashSet; diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionInformationProvider.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/extension/CompletionInformationProvider.kt similarity index 89% rename from idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionInformationProvider.kt rename to idea/idea-core/src/org/jetbrains/kotlin/idea/core/extension/CompletionInformationProvider.kt index 765003ea095..4e3e6aa056c 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionInformationProvider.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/extension/CompletionInformationProvider.kt @@ -14,6 +14,10 @@ * limitations under the License. */ +/* + * The old package name left for compatibility reasons with Android IDE plugin + * (it's bundled inside Android Studio). + */ package org.jetbrains.kotlin.idea.completion import com.intellij.openapi.extensions.ExtensionPointName diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/surroundWith/KotlinExpressionSurroundDescriptorBase.java b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/surroundWith/KotlinExpressionSurroundDescriptorBase.java new file mode 100644 index 00000000000..9c5b88303ba --- /dev/null +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/surroundWith/KotlinExpressionSurroundDescriptorBase.java @@ -0,0 +1,29 @@ +/* + * Copyright 2000-2019 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.core.surroundWith; + +import com.intellij.lang.surroundWith.SurroundDescriptor; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils; +import org.jetbrains.kotlin.psi.KtExpression; + +public abstract class KotlinExpressionSurroundDescriptorBase implements SurroundDescriptor { + @Override + @NotNull + public PsiElement[] getElementsToSurround(PsiFile file, int startOffset, int endOffset) { + KtExpression expression = (KtExpression) CodeInsightUtils.findElement( + file, startOffset, endOffset, CodeInsightUtils.ElementKind.EXPRESSION); + + return expression == null ? PsiElement.EMPTY_ARRAY : new PsiElement[] {expression}; + } + + @Override + public boolean isExclusive() { + return false; + } +} diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinExpressionSurrounder.java b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/surroundWith/KotlinExpressionSurrounder.java similarity index 75% rename from idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinExpressionSurrounder.java rename to idea/idea-core/src/org/jetbrains/kotlin/idea/core/surroundWith/KotlinExpressionSurrounder.java index 0134f34ab4c..81e216fd49d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinExpressionSurrounder.java +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/surroundWith/KotlinExpressionSurrounder.java @@ -1,20 +1,9 @@ /* - * Copyright 2010-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2000-2019 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.codeInsight.surroundWith.expression; +package org.jetbrains.kotlin.idea.core.surroundWith; import com.intellij.lang.surroundWith.Surrounder; import com.intellij.openapi.editor.Editor; @@ -32,7 +21,7 @@ import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import org.jetbrains.kotlin.types.KotlinType; import static org.jetbrains.kotlin.builtins.KotlinBuiltIns.isUnit; -import static org.jetbrains.kotlin.idea.codeInsight.surroundWith.KotlinSurrounderUtils.isUsedAsStatement; +import static org.jetbrains.kotlin.idea.core.surroundWith.KotlinSurrounderUtils.isUsedAsStatement; public abstract class KotlinExpressionSurrounder implements Surrounder { diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/KotlinSurrounderUtils.java b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/surroundWith/KotlinSurrounderUtils.java similarity index 72% rename from idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/KotlinSurrounderUtils.java rename to idea/idea-core/src/org/jetbrains/kotlin/idea/core/surroundWith/KotlinSurrounderUtils.java index 4773724e10e..8771303b5ca 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/KotlinSurrounderUtils.java +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/surroundWith/KotlinSurrounderUtils.java @@ -1,20 +1,9 @@ /* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2000-2019 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.codeInsight.surroundWith; +package org.jetbrains.kotlin.idea.core.surroundWith; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; @@ -22,7 +11,7 @@ import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.idea.KotlinBundle; import org.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils; -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils; +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils; import org.jetbrains.kotlin.psi.KtBlockExpression; import org.jetbrains.kotlin.psi.KtExpression; import org.jetbrains.kotlin.resolve.BindingContext; diff --git a/idea/src/org/jetbrains/kotlin/idea/util/attachment/attachmentUtils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/AttachmentUtils.kt similarity index 53% rename from idea/src/org/jetbrains/kotlin/idea/util/attachment/attachmentUtils.kt rename to idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/AttachmentUtils.kt index 3b3cbd197a2..4da4642a838 100644 --- a/idea/src/org/jetbrains/kotlin/idea/util/attachment/attachmentUtils.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/AttachmentUtils.kt @@ -1,33 +1,14 @@ /* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2000-2019 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.util.attachment +package org.jetbrains.kotlin.idea.core.util import com.intellij.diagnostic.AttachmentFactory import com.intellij.openapi.diagnostic.Attachment import com.intellij.psi.PsiFile -fun attachmentByPsiFileAsArray(file: PsiFile?): Array { - val attachment = attachmentByPsiFile(file) - if (attachment == null) { - return arrayOf() - } - return arrayOf(attachment) -} - fun attachmentByPsiFile(file: PsiFile?): Attachment? { if (file == null) return null diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/CodeInsightUtils.java b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/CodeInsightUtils.java similarity index 95% rename from idea/src/org/jetbrains/kotlin/idea/codeInsight/CodeInsightUtils.java rename to idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/CodeInsightUtils.java index d7cc43ca002..056299bede9 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/CodeInsightUtils.java +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/CodeInsightUtils.java @@ -1,20 +1,9 @@ /* - * Copyright 2010-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2000-2019 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.codeInsight; +package org.jetbrains.kotlin.idea.core.util; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.Document; diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/PhysicalFileSystemUtils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/PhysicalFileSystemUtils.kt new file mode 100644 index 00000000000..cf8fbad6c86 --- /dev/null +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/PhysicalFileSystemUtils.kt @@ -0,0 +1,26 @@ +/* + * Copyright 2000-2019 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.core.util + +import com.intellij.openapi.project.Project +import com.intellij.openapi.vfs.LocalFileSystem +import com.intellij.openapi.vfs.VirtualFile +import com.intellij.psi.PsiDirectory +import com.intellij.psi.PsiFile +import com.intellij.psi.PsiManager +import java.io.File + +fun File.toPsiFile(project: Project): PsiFile? = toVirtualFile()?.toPsiFile(project) + +fun File.toVirtualFile(): VirtualFile? = LocalFileSystem.getInstance().findFileByIoFile(this) + +fun File.toPsiDirectory(project: Project): PsiDirectory? { + return toVirtualFile()?.let { vfile -> PsiManager.getInstance(project).findDirectory(vfile) } +} + +fun VirtualFile.toPsiFile(project: Project): PsiFile? = PsiManager.getInstance(project).findFile(this) + +fun VirtualFile.toPsiDirectory(project: Project): PsiDirectory? = PsiManager.getInstance(project).findDirectory(this) \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/ProgressUtil.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/ProgressUtil.kt similarity index 64% rename from idea/src/org/jetbrains/kotlin/idea/ProgressUtil.kt rename to idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/ProgressUtil.kt index 4450c3ea973..0e623a19f0a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/ProgressUtil.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/ProgressUtil.kt @@ -1,20 +1,9 @@ /* - * Copyright 2010-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2000-2019 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 +package org.jetbrains.kotlin.idea.core.util import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.progress.ProcessCanceledException diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/PsiLinesUtils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/PsiLinesUtils.kt new file mode 100644 index 00000000000..8cc689e25cd --- /dev/null +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/PsiLinesUtils.kt @@ -0,0 +1,55 @@ +/* + * Copyright 2000-2019 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.core.util + +import com.intellij.openapi.util.TextRange +import com.intellij.psi.* +import com.intellij.psi.util.PsiTreeUtil +import org.jetbrains.kotlin.psi.psiUtil.endOffset +import org.jetbrains.kotlin.psi.psiUtil.startOffset + +fun PsiFile.getLineStartOffset(line: Int): Int? { + val doc = viewProvider.document ?: PsiDocumentManager.getInstance(project).getDocument(this) + if (doc != null && line >= 0 && line < doc.lineCount) { + val startOffset = doc.getLineStartOffset(line) + val element = findElementAt(startOffset) ?: return startOffset + + if (element is PsiWhiteSpace || element is PsiComment) { + return PsiTreeUtil.skipSiblingsForward(element, PsiWhiteSpace::class.java, PsiComment::class.java)?.startOffset ?: startOffset + } + return startOffset + } + + return null +} + +fun PsiFile.getLineEndOffset(line: Int): Int? { + val document = viewProvider.document ?: PsiDocumentManager.getInstance(project).getDocument(this) + return document?.getLineEndOffset(line) +} + +fun PsiElement.getLineNumber(start: Boolean = true): Int { + val document = containingFile.viewProvider.document ?: PsiDocumentManager.getInstance(project).getDocument(containingFile) + return document?.getLineNumber(if (start) this.startOffset else this.endOffset) ?: 0 +} + +fun PsiElement.getLineCount(): Int { + val doc = containingFile?.let { file -> PsiDocumentManager.getInstance(project).getDocument(file) } + if (doc != null) { + val spaceRange = textRange ?: TextRange.EMPTY_RANGE + + if (spaceRange.endOffset <= doc.textLength) { + val startLine = doc.getLineNumber(spaceRange.startOffset) + val endLine = doc.getLineNumber(spaceRange.endOffset) + + return endLine - startLine + } + } + + return (text ?: "").count { it == '\n' } + 1 +} + +fun PsiElement.isMultiLine(): Boolean = getLineCount() > 1 \ No newline at end of file diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/RangeUtils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/RangeUtils.kt new file mode 100644 index 00000000000..032eee5d7a2 --- /dev/null +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/RangeUtils.kt @@ -0,0 +1,31 @@ +/* + * Copyright 2000-2019 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.core.util + +import com.intellij.openapi.editor.RangeMarker +import com.intellij.openapi.util.TextRange +import com.intellij.psi.PsiElement + +val TextRange.start: Int + get() = startOffset + +val TextRange.end: Int + get() = endOffset + +val PsiElement.range: TextRange + get() = textRange!! + +val RangeMarker.range: TextRange? + get() = if (isValid) { + val start = startOffset + val end = endOffset + if (start in 0..end) { + TextRange(start, end) + } else { + // Probably a race condition had happened and range marker is invalidated + null + } + } else null \ No newline at end of file diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/RuntimeLibraryUtils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/RuntimeLibraryUtils.kt new file mode 100644 index 00000000000..5224c6b9a27 --- /dev/null +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/RuntimeLibraryUtils.kt @@ -0,0 +1,22 @@ +/* + * Copyright 2000-2019 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.core.util + +import com.intellij.openapi.project.Project +import com.intellij.psi.JavaPsiFacade +import com.intellij.psi.PsiClass +import com.intellij.psi.search.GlobalSearchScope +import org.jetbrains.kotlin.builtins.KotlinBuiltIns +import org.jetbrains.kotlin.idea.util.application.runReadAction +import org.jetbrains.kotlin.idea.util.runWithAlternativeResolveEnabled + +fun getKotlinJvmRuntimeMarkerClass(project: Project, scope: GlobalSearchScope): PsiClass? { + return runReadAction { + project.runWithAlternativeResolveEnabled { + JavaPsiFacade.getInstance(project).findClass(KotlinBuiltIns.FQ_NAMES.unit.asString(), scope) + } + } +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/util/uiUtil.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/UiUtils.kt similarity index 83% rename from idea/src/org/jetbrains/kotlin/idea/util/uiUtil.kt rename to idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/UiUtils.kt index cd91a2880df..8237d48b2c6 100644 --- a/idea/src/org/jetbrains/kotlin/idea/util/uiUtil.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/UiUtils.kt @@ -1,9 +1,9 @@ /* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2000-2019 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.util +package org.jetbrains.kotlin.idea.core.util import com.intellij.ui.DocumentAdapter import javax.swing.event.DocumentEvent diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/gradleModuleBuilderUtils.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/gradleModuleBuilderUtils.kt index 56551cd7f37..375705ce710 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/gradleModuleBuilderUtils.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/gradleModuleBuilderUtils.kt @@ -17,7 +17,7 @@ import com.intellij.openapi.vfs.LocalFileSystem import com.intellij.openapi.vfs.VfsUtil import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.codeStyle.CodeStyleManager -import org.jetbrains.kotlin.idea.refactoring.toPsiFile +import org.jetbrains.kotlin.idea.core.util.toPsiFile import org.jetbrains.kotlin.psi.UserDataProperty import org.jetbrains.plugins.gradle.frameworkSupport.GradleFrameworkSupportProvider import org.jetbrains.plugins.gradle.service.project.wizard.GradleModuleBuilder diff --git a/idea/idea-j2k/build.gradle.kts b/idea/idea-j2k/build.gradle.kts new file mode 100644 index 00000000000..1acb67ce054 --- /dev/null +++ b/idea/idea-j2k/build.gradle.kts @@ -0,0 +1,14 @@ +plugins { + kotlin("jvm") + id("jps-compatible") +} + +dependencies { + compile(project(":j2k")) + compile(project(":idea:idea-core")) +} + +sourceSets { + "main" { projectDefault() } + "test" { none() } +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/j2k/IdeaJavaToKotlinServices.kt b/idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/IdeaJavaToKotlinServices.kt similarity index 100% rename from idea/src/org/jetbrains/kotlin/idea/j2k/IdeaJavaToKotlinServices.kt rename to idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/IdeaJavaToKotlinServices.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/j2k/IdeaReferenceSearcher.kt b/idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/IdeaReferenceSearcher.kt similarity index 100% rename from idea/src/org/jetbrains/kotlin/idea/j2k/IdeaReferenceSearcher.kt rename to idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/IdeaReferenceSearcher.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/j2k/IdeaResolverForConverter.kt b/idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/IdeaResolverForConverter.kt similarity index 100% rename from idea/src/org/jetbrains/kotlin/idea/j2k/IdeaResolverForConverter.kt rename to idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/IdeaResolverForConverter.kt diff --git a/idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/J2KUtils.kt b/idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/J2KUtils.kt new file mode 100644 index 00000000000..061397f13b6 --- /dev/null +++ b/idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/J2KUtils.kt @@ -0,0 +1,40 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. 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.j2k + +import com.intellij.lang.java.JavaLanguage +import com.intellij.psi.PsiElement +import com.intellij.psi.PsiExpression +import com.intellij.psi.PsiMember +import org.jetbrains.kotlin.j2k.ConverterSettings +import org.jetbrains.kotlin.psi.KtExpression +import org.jetbrains.kotlin.psi.KtNamedDeclaration +import org.jetbrains.kotlin.psi.KtPsiFactory + +fun PsiElement.j2kText(): String? = + convertToKotlin()?.results?.single()?.text //TODO: insert imports + +fun PsiElement.convertToKotlin(): org.jetbrains.kotlin.j2k.Result? { + if (language != JavaLanguage.INSTANCE) return null + + val j2kConverter = + JavaToKotlinConverterFactory.createJavaToKotlinConverter( + project, + ConverterSettings.defaultSettings, + IdeaJavaToKotlinServices + ) + return j2kConverter.elementsToKotlin(listOf(this)) +} + +fun PsiExpression.j2k(): KtExpression? { + val text = j2kText() ?: return null + return KtPsiFactory(project).createExpression(text) +} + +fun PsiMember.j2k(): KtNamedDeclaration? { + val text = j2kText() ?: return null + return KtPsiFactory(project).createDeclaration(text) +} \ No newline at end of file diff --git a/idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt b/idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt new file mode 100644 index 00000000000..7dadb1e144a --- /dev/null +++ b/idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt @@ -0,0 +1,26 @@ +/* + * Copyright 2000-2019 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.j2k + +import com.intellij.openapi.components.ServiceManager +import org.jetbrains.kotlin.psi.KtElement +import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics + +interface J2kPostProcessing { + fun createAction(element: KtElement, diagnostics: Diagnostics): (() -> Unit)? + val writeActionNeeded: Boolean +} + +interface J2KPostProcessingRegistrar { + val processings: Collection + + fun priority(processing: J2kPostProcessing): Int + + companion object { + val instance: J2KPostProcessingRegistrar + get() = ServiceManager.getService(J2KPostProcessingRegistrar::class.java) + } +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessor.kt b/idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessor.kt similarity index 95% rename from idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessor.kt rename to idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessor.kt index 7c5cbb481c4..a44869f707e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessor.kt +++ b/idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessor.kt @@ -27,7 +27,7 @@ import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withContext import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference -import org.jetbrains.kotlin.idea.conversion.copy.range +import org.jetbrains.kotlin.idea.core.util.range import org.jetbrains.kotlin.idea.core.util.EDT import org.jetbrains.kotlin.idea.util.ImportInsertHelper import org.jetbrains.kotlin.idea.util.application.runReadAction @@ -119,13 +119,14 @@ class J2kPostProcessor(private val formatCode: Boolean) : PostProcessor { super.visitElement(element) if (rangeResult == RangeFilterResult.PROCESS) { - J2KPostProcessingRegistrarImpl.processings.forEach { processing -> + val postProcessingRegistrar = J2KPostProcessingRegistrar.instance + postProcessingRegistrar.processings.forEach { processing -> val action = processing.createAction(element, diagnostics) if (action != null) { availableActions.add( ActionData( element, action, - J2KPostProcessingRegistrarImpl.priority(processing), + postProcessingRegistrar.priority(processing), processing.writeActionNeeded ) ) diff --git a/idea/src/org/jetbrains/kotlin/idea/j2k/JavaToKotlinConverterFactory.kt b/idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/JavaToKotlinConverterFactory.kt similarity index 100% rename from idea/src/org/jetbrains/kotlin/idea/j2k/JavaToKotlinConverterFactory.kt rename to idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/JavaToKotlinConverterFactory.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/j2k/OldJ2kConveterExtension.kt b/idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/OldJ2kConverterExtension.kt similarity index 100% rename from idea/src/org/jetbrains/kotlin/idea/j2k/OldJ2kConveterExtension.kt rename to idea/idea-j2k/src/org/jetbrains/kotlin/idea/j2k/OldJ2kConverterExtension.kt diff --git a/idea/idea-jvm/build.gradle.kts b/idea/idea-jvm/build.gradle.kts index 7d5baf10baa..eaa33538b50 100644 --- a/idea/idea-jvm/build.gradle.kts +++ b/idea/idea-jvm/build.gradle.kts @@ -20,7 +20,6 @@ dependencies { compileOnly(intellijPluginDep("copyright")) compileOnly(intellijPluginDep("properties")) compileOnly(intellijPluginDep("java-i18n")) - compileOnly(intellijPluginDep("stream-debugger")) } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt index e0752fc89f5..ab45d5ae985 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt @@ -26,6 +26,7 @@ import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.configuration.ui.notifications.ConfigureKotlinNotification +import org.jetbrains.kotlin.idea.core.util.getKotlinJvmRuntimeMarkerClass import org.jetbrains.kotlin.idea.framework.JSLibraryKind import org.jetbrains.kotlin.idea.framework.effectiveKind import org.jetbrains.kotlin.idea.quickfix.KotlinAddRequiredModuleFix @@ -37,7 +38,6 @@ import org.jetbrains.kotlin.idea.util.projectStructure.allModules import org.jetbrains.kotlin.idea.util.projectStructure.sdk import org.jetbrains.kotlin.idea.util.projectStructure.version import org.jetbrains.kotlin.idea.versions.SuppressNotificationState -import org.jetbrains.kotlin.idea.versions.getKotlinJvmRuntimeMarkerClass import org.jetbrains.kotlin.idea.versions.hasKotlinJsKjsmFile import org.jetbrains.kotlin.idea.versions.isSnapshot import org.jetbrains.kotlin.idea.vfilefinder.IDEVirtualFileFinder diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CompiledDataDescriptor.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CompiledDataDescriptor.kt deleted file mode 100644 index eb22b75c94f..00000000000 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CompiledDataDescriptor.kt +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2010-2019 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.debugger.evaluate.compilation - -import com.intellij.debugger.SourcePosition -import org.jetbrains.kotlin.idea.debugger.evaluate.classLoading.ClassToLoad - -data class CompiledDataDescriptor( - val classes: List, - val parameters: List, - val crossingBounds: Set, - val mainMethodSignature: CodeFragmentCompiler.MethodSignature, - val sourcePosition: SourcePosition? -) { - companion object { - fun from(result: CodeFragmentCompiler.CompilationResult, sourcePosition: SourcePosition?): CompiledDataDescriptor { - val localFunctionSuffixes = result.localFunctionSuffixes - - val dumbParameters = ArrayList(result.parameterInfo.parameters.size) - for (parameter in result.parameterInfo.parameters) { - val dumb = parameter.dumb - if (dumb.kind == CodeFragmentParameter.Kind.LOCAL_FUNCTION) { - val suffix = localFunctionSuffixes[dumb] - if (suffix != null) { - dumbParameters += dumb.copy(name = dumb.name + suffix) - continue - } - } - - dumbParameters += dumb - } - - return CompiledDataDescriptor( - result.classes, - dumbParameters, - result.parameterInfo.crossingBounds, - result.mainMethodSignature, - sourcePosition - ) - } - } -} - -val CompiledDataDescriptor.mainClass: ClassToLoad - get() = classes.first { it.isMainClass } \ No newline at end of file diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/ui/CopyIntoPanel.java b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/ui/CopyIntoPanel.java index e2bc31afaf7..dcc9cbec3e9 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/ui/CopyIntoPanel.java +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/ui/CopyIntoPanel.java @@ -24,7 +24,7 @@ import com.intellij.util.EventDispatcher; import kotlin.Unit; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.idea.util.UiUtilKt; +import org.jetbrains.kotlin.idea.core.util.UiUtilsKt; import javax.swing.*; import javax.swing.event.DocumentEvent; @@ -47,7 +47,7 @@ public class CopyIntoPanel { copyIntoField.addBrowseFolderListener( "Copy Into...", "Choose folder where files will be copied", project, FileChooserDescriptorFactory.createSingleFolderDescriptor()); - UiUtilKt.onTextChange( + UiUtilsKt.onTextChange( copyIntoField.getTextField(), (DocumentEvent e) -> { updateComponents(); diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjector.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjector.kt index f615a5dbba6..e0069fa20ae 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjector.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjector.kt @@ -47,10 +47,10 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.annotations.Annotated import org.jetbrains.kotlin.idea.caches.resolve.allowResolveInWriteAction import org.jetbrains.kotlin.idea.caches.resolve.analyze +import org.jetbrains.kotlin.idea.core.util.runInReadActionWithWriteActionPriority import org.jetbrains.kotlin.idea.patterns.KotlinFunctionPattern import org.jetbrains.kotlin.idea.references.KtReference import org.jetbrains.kotlin.idea.references.mainReference -import org.jetbrains.kotlin.idea.runInReadActionWithWriteActionPriority import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.lexer.KtTokens diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/KtScratchFile.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/KtScratchFile.kt index c419bd61fc0..969cd8e206f 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/KtScratchFile.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/KtScratchFile.kt @@ -24,9 +24,9 @@ import com.intellij.psi.PsiWhiteSpace import com.intellij.psi.util.PsiUtil import org.jetbrains.kotlin.diagnostics.Severity import org.jetbrains.kotlin.idea.caches.resolve.analyzeWithContent -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils -import org.jetbrains.kotlin.idea.refactoring.getLineNumber -import org.jetbrains.kotlin.idea.refactoring.getLineStartOffset +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.getLineNumber +import org.jetbrains.kotlin.idea.core.util.getLineStartOffset import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtImportDirective diff --git a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/AbstractKotlinMavenInspectionTest.kt b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/AbstractKotlinMavenInspectionTest.kt index 35605ca6a8e..3b37e625d5b 100644 --- a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/AbstractKotlinMavenInspectionTest.kt +++ b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/AbstractKotlinMavenInspectionTest.kt @@ -31,9 +31,9 @@ import com.intellij.psi.PsiManager import com.intellij.psi.search.FileTypeIndex import org.jetbrains.jps.model.java.JavaSourceRootType import org.jetbrains.kotlin.config.SourceKotlinRootType +import org.jetbrains.kotlin.idea.core.util.toPsiDirectory import org.jetbrains.kotlin.idea.inspections.runInspection import org.jetbrains.kotlin.idea.maven.inspections.KotlinMavenPluginPhaseInspection -import org.jetbrains.kotlin.idea.refactoring.toPsiDirectory import org.jetbrains.kotlin.idea.util.projectStructure.allModules import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.utils.keysToMap diff --git a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt index 6870aa70692..7f23a1ea2fd 100644 --- a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt +++ b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt @@ -36,6 +36,7 @@ import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.idea.caches.project.productionSourceInfo import org.jetbrains.kotlin.idea.caches.project.testSourceInfo import org.jetbrains.kotlin.idea.caches.resolve.analyzeAndGetResult +import org.jetbrains.kotlin.idea.core.util.toPsiFile import org.jetbrains.kotlin.idea.facet.KotlinFacet import org.jetbrains.kotlin.idea.formatter.KotlinObsoleteCodeStyle import org.jetbrains.kotlin.idea.formatter.KotlinStyleGuideCodeStyle @@ -44,7 +45,6 @@ import org.jetbrains.kotlin.idea.framework.CommonLibraryKind import org.jetbrains.kotlin.idea.framework.JSLibraryKind import org.jetbrains.kotlin.idea.framework.KotlinSdkType import org.jetbrains.kotlin.idea.project.languageVersionSettings -import org.jetbrains.kotlin.idea.refactoring.toPsiFile import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner import org.jetbrains.kotlin.platform.CommonPlatforms diff --git a/idea/eval4j/ReadMe.md b/idea/jvm-debugger/eval4j/ReadMe.md similarity index 100% rename from idea/eval4j/ReadMe.md rename to idea/jvm-debugger/eval4j/ReadMe.md diff --git a/idea/eval4j/build.gradle.kts b/idea/jvm-debugger/eval4j/build.gradle.kts similarity index 100% rename from idea/eval4j/build.gradle.kts rename to idea/jvm-debugger/eval4j/build.gradle.kts diff --git a/idea/eval4j/src/org/jetbrains/eval4j/interpreter.kt b/idea/jvm-debugger/eval4j/src/org/jetbrains/eval4j/interpreter.kt similarity index 100% rename from idea/eval4j/src/org/jetbrains/eval4j/interpreter.kt rename to idea/jvm-debugger/eval4j/src/org/jetbrains/eval4j/interpreter.kt diff --git a/idea/eval4j/src/org/jetbrains/eval4j/interpreterLoop.kt b/idea/jvm-debugger/eval4j/src/org/jetbrains/eval4j/interpreterLoop.kt similarity index 100% rename from idea/eval4j/src/org/jetbrains/eval4j/interpreterLoop.kt rename to idea/jvm-debugger/eval4j/src/org/jetbrains/eval4j/interpreterLoop.kt diff --git a/idea/eval4j/src/org/jetbrains/eval4j/jdi/jdiEval.kt b/idea/jvm-debugger/eval4j/src/org/jetbrains/eval4j/jdi/jdiEval.kt similarity index 100% rename from idea/eval4j/src/org/jetbrains/eval4j/jdi/jdiEval.kt rename to idea/jvm-debugger/eval4j/src/org/jetbrains/eval4j/jdi/jdiEval.kt diff --git a/idea/eval4j/src/org/jetbrains/eval4j/jdi/jdiValues.kt b/idea/jvm-debugger/eval4j/src/org/jetbrains/eval4j/jdi/jdiValues.kt similarity index 100% rename from idea/eval4j/src/org/jetbrains/eval4j/jdi/jdiValues.kt rename to idea/jvm-debugger/eval4j/src/org/jetbrains/eval4j/jdi/jdiValues.kt diff --git a/idea/eval4j/src/org/jetbrains/eval4j/members.kt b/idea/jvm-debugger/eval4j/src/org/jetbrains/eval4j/members.kt similarity index 100% rename from idea/eval4j/src/org/jetbrains/eval4j/members.kt rename to idea/jvm-debugger/eval4j/src/org/jetbrains/eval4j/members.kt diff --git a/idea/eval4j/src/org/jetbrains/eval4j/values.kt b/idea/jvm-debugger/eval4j/src/org/jetbrains/eval4j/values.kt similarity index 100% rename from idea/eval4j/src/org/jetbrains/eval4j/values.kt rename to idea/jvm-debugger/eval4j/src/org/jetbrains/eval4j/values.kt diff --git a/idea/eval4j/test/org/jetbrains/eval4j/jdi/test/Debugee.java b/idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/jdi/test/Debugee.java similarity index 100% rename from idea/eval4j/test/org/jetbrains/eval4j/jdi/test/Debugee.java rename to idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/jdi/test/Debugee.java diff --git a/idea/eval4j/test/org/jetbrains/eval4j/jdi/test/jdiTest.kt b/idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/jdi/test/jdiTest.kt similarity index 100% rename from idea/eval4j/test/org/jetbrains/eval4j/jdi/test/jdiTest.kt rename to idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/jdi/test/jdiTest.kt diff --git a/idea/eval4j/test/org/jetbrains/eval4j/test/ArrayHelper.java b/idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/test/ArrayHelper.java similarity index 100% rename from idea/eval4j/test/org/jetbrains/eval4j/test/ArrayHelper.java rename to idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/test/ArrayHelper.java diff --git a/idea/eval4j/test/org/jetbrains/eval4j/test/BaseTestData.java b/idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/test/BaseTestData.java similarity index 100% rename from idea/eval4j/test/org/jetbrains/eval4j/test/BaseTestData.java rename to idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/test/BaseTestData.java diff --git a/idea/eval4j/test/org/jetbrains/eval4j/test/Eval4jTest.java b/idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/test/Eval4jTest.java similarity index 100% rename from idea/eval4j/test/org/jetbrains/eval4j/test/Eval4jTest.java rename to idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/test/Eval4jTest.java diff --git a/idea/eval4j/test/org/jetbrains/eval4j/test/IgnoreInReflectionTests.java b/idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/test/IgnoreInReflectionTests.java similarity index 100% rename from idea/eval4j/test/org/jetbrains/eval4j/test/IgnoreInReflectionTests.java rename to idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/test/IgnoreInReflectionTests.java diff --git a/idea/eval4j/test/org/jetbrains/eval4j/test/TestData.java b/idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/test/TestData.java similarity index 100% rename from idea/eval4j/test/org/jetbrains/eval4j/test/TestData.java rename to idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/test/TestData.java diff --git a/idea/eval4j/test/org/jetbrains/eval4j/test/main.kt b/idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/test/main.kt similarity index 100% rename from idea/eval4j/test/org/jetbrains/eval4j/test/main.kt rename to idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/test/main.kt diff --git a/idea/eval4j/test/org/jetbrains/eval4j/test/suiteBuilder.kt b/idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/test/suiteBuilder.kt similarity index 100% rename from idea/eval4j/test/org/jetbrains/eval4j/test/suiteBuilder.kt rename to idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/test/suiteBuilder.kt diff --git a/idea/eval4j/test/org/jetbrains/eval4j/test/util.kt b/idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/test/util.kt similarity index 100% rename from idea/eval4j/test/org/jetbrains/eval4j/test/util.kt rename to idea/jvm-debugger/eval4j/test/org/jetbrains/eval4j/test/util.kt diff --git a/idea/jvm-debugger/jvm-debugger-core/build.gradle.kts b/idea/jvm-debugger/jvm-debugger-core/build.gradle.kts new file mode 100644 index 00000000000..e010d8efa52 --- /dev/null +++ b/idea/jvm-debugger/jvm-debugger-core/build.gradle.kts @@ -0,0 +1,24 @@ +plugins { + kotlin("jvm") + id("jps-compatible") +} + +dependencies { + compile(project(":compiler:backend")) + compile(project(":compiler:backend-common")) + compile(project(":compiler:light-classes")) + compile(project(":idea:idea-core")) + compile(project(":idea:ide-common")) + compile(project(":idea:jvm-debugger:jvm-debugger-util")) + compile(files("${System.getProperty("java.home")}/../lib/tools.jar")) + + compileOnly(intellijPluginDep("stream-debugger")) + + testCompile(project(":kotlin-test:kotlin-test-junit")) + testCompile(commonDep("junit:junit")) +} + +sourceSets { + "main" { projectDefault() } + "test" { none() } +} \ No newline at end of file diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/DebuggerClassNameProvider.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/DebuggerClassNameProvider.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/DebuggerClassNameProvider.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/DebuggerClassNameProvider.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/DelegateSourcePosition.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/DelegateSourcePosition.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/DelegateSourcePosition.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/DelegateSourcePosition.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/DiagnosticSuppressorForDebugger.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/DiagnosticSuppressorForDebugger.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/DiagnosticSuppressorForDebugger.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/DiagnosticSuppressorForDebugger.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/InlineCallableUsagesSearcher.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/InlineCallableUsagesSearcher.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/InlineCallableUsagesSearcher.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/InlineCallableUsagesSearcher.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinAlternativeSourceNotificationProvider.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinAlternativeSourceNotificationProvider.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinAlternativeSourceNotificationProvider.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinAlternativeSourceNotificationProvider.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProvider.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProvider.kt similarity index 98% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProvider.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProvider.kt index f183c382914..5a39ee53c17 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProvider.kt +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProvider.kt @@ -19,7 +19,6 @@ import com.intellij.xdebugger.frame.XNamedValue import com.sun.jdi.* import org.jetbrains.kotlin.codegen.coroutines.CONTINUATION_VARIABLE_NAME import org.jetbrains.kotlin.idea.debugger.evaluate.ExecutionContext -import org.jetbrains.kotlin.idea.debugger.evaluate.variables.VariableFinder.Companion.SUSPEND_LAMBDA_CLASSES class KotlinCoroutinesAsyncStackTraceProvider : KotlinCoroutinesAsyncStackTraceProviderBase { private companion object { diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProviderBase.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProviderBase.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProviderBase.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProviderBase.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProviderBase.kt.182 b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProviderBase.kt.182 similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProviderBase.kt.182 rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProviderBase.kt.182 diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinDebuggerSettings.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDebuggerSettings.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinDebuggerSettings.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDebuggerSettings.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.form b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.form similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.form rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.form diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.java b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.java similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.java rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.java diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinFrameExtraVariablesProvider.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinFrameExtraVariablesProvider.kt similarity index 97% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinFrameExtraVariablesProvider.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinFrameExtraVariablesProvider.kt index 80f1384f736..77235779ff8 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinFrameExtraVariablesProvider.kt +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinFrameExtraVariablesProvider.kt @@ -33,9 +33,9 @@ import com.intellij.util.text.CharArrayUtil import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.caches.resolve.analyzeWithAllCompilerChecks -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils -import org.jetbrains.kotlin.idea.refactoring.getLineEndOffset -import org.jetbrains.kotlin.idea.refactoring.getLineStartOffset +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.getLineEndOffset +import org.jetbrains.kotlin.idea.core.util.getLineStartOffset import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.BindingContext diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinJavaScriptDebugAware.java b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinJavaScriptDebugAware.java similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinJavaScriptDebugAware.java rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinJavaScriptDebugAware.java diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinPositionManager.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinPositionManager.kt similarity index 97% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinPositionManager.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinPositionManager.kt index 9b099406a7f..33e5b1081f5 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinPositionManager.kt +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinPositionManager.kt @@ -44,14 +44,13 @@ import com.sun.jdi.ReferenceType import com.sun.jdi.request.ClassPrepareRequest import org.jetbrains.kotlin.codegen.inline.KOTLIN_STRATA_NAME import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil -import org.jetbrains.kotlin.idea.KotlinFileTypeFactory -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.KotlinFileTypeFactory +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.getLineCount +import org.jetbrains.kotlin.idea.core.util.getLineStartOffset import org.jetbrains.kotlin.idea.debugger.breakpoints.getLambdasAtLineIfAny -import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinCodeFragmentFactory import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches import org.jetbrains.kotlin.idea.decompiler.classFile.KtClsFile -import org.jetbrains.kotlin.idea.refactoring.getLineCount -import org.jetbrains.kotlin.idea.refactoring.getLineStartOffset import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.idea.util.application.runReadAction @@ -201,7 +200,7 @@ class KotlinPositionManager(private val myDebugProcess: DebugProcess) : MultiReq private fun getElementForDeclarationLine(location: Location, file: KtFile, lineNumber: Int): KtElement? { val lineStartOffset = file.getLineStartOffset(lineNumber) ?: return null val elementAt = file.findElementAt(lineStartOffset) - val contextElement = KotlinCodeFragmentFactory.getContextElement(elementAt) + val contextElement = getContextElement(elementAt) if (contextElement !is KtClass) return null diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinPositionManagerFactory.java b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinPositionManagerFactory.java similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinPositionManagerFactory.java rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinPositionManagerFactory.java diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinSourcePositionHighlighter.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinSourcePositionHighlighter.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinSourcePositionHighlighter.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinSourcePositionHighlighter.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinSourcePositionProvider.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinSourcePositionProvider.kt similarity index 89% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinSourcePositionProvider.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinSourcePositionProvider.kt index 97e412861fc..2711ea63bb0 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinSourcePositionProvider.kt +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinSourcePositionProvider.kt @@ -25,19 +25,14 @@ import com.intellij.debugger.ui.tree.FieldDescriptor import com.intellij.debugger.ui.tree.LocalVariableDescriptor import com.intellij.debugger.ui.tree.NodeDescriptor import com.intellij.openapi.project.Project -import com.intellij.psi.JavaPsiFacade -import com.intellij.psi.PsiElement +import com.intellij.psi.* import com.intellij.psi.search.GlobalSearchScope import com.sun.jdi.AbsentInformationException import com.sun.jdi.ClassNotPreparedException import com.sun.jdi.ReferenceType import org.jetbrains.kotlin.codegen.AsmUtil import org.jetbrains.kotlin.idea.caches.resolve.analyze -import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinCodeFragmentFactory -import org.jetbrains.kotlin.psi.KtClassOrObject -import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.psi.KtPsiFactory -import org.jetbrains.kotlin.psi.KtSimpleNameExpression +import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType import org.jetbrains.kotlin.resolve.BindingContextUtils import org.jetbrains.kotlin.resolve.jvm.JvmClassName @@ -45,7 +40,7 @@ import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.resolve.source.KotlinSourceElement import org.jetbrains.kotlin.resolve.source.getPsi -class KotlinSourcePositionProvider: SourcePositionProvider() { +class KotlinSourcePositionProvider : SourcePositionProvider() { override fun computeSourcePosition(descriptor: NodeDescriptor, project: Project, context: DebuggerContextImpl, nearest: Boolean): SourcePosition? { if (context.frameProxy == null) return null @@ -60,11 +55,16 @@ class KotlinSourcePositionProvider: SourcePositionProvider() { return null } - private fun computeSourcePosition(descriptor: LocalVariableDescriptor, project: Project, context: DebuggerContextImpl, nearest: Boolean): SourcePosition? { + private fun computeSourcePosition( + descriptor: LocalVariableDescriptor, + project: Project, + context: DebuggerContextImpl, + nearest: Boolean + ): SourcePosition? { val place = PositionUtil.getContextElement(context) ?: return null if (place.containingFile !is KtFile) return null - val contextElement = KotlinCodeFragmentFactory.getContextElement(place) ?: return null + val contextElement = getContextElement(place) ?: return null val codeFragment = KtPsiFactory(project).createExpressionCodeFragment(descriptor.name, contextElement) val expression = codeFragment.getContentElement() diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinStackFrame.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinStackFrame.kt similarity index 95% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinStackFrame.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinStackFrame.kt index 520ce7ef912..539468d21f9 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinStackFrame.kt +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinStackFrame.kt @@ -30,6 +30,7 @@ import com.intellij.debugger.ui.impl.watch.MethodsTracker import com.intellij.debugger.ui.impl.watch.StackFrameDescriptorImpl import com.intellij.debugger.ui.impl.watch.ThisDescriptorImpl import com.intellij.debugger.ui.impl.watch.ValueDescriptorImpl +import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.project.Project import com.intellij.psi.JavaPsiFacade import com.intellij.psi.PsiExpression @@ -46,13 +47,17 @@ import org.jetbrains.kotlin.codegen.DESTRUCTURED_LAMBDA_ARGUMENT_VARIABLE_PREFIX import org.jetbrains.kotlin.codegen.coroutines.CONTINUATION_VARIABLE_NAME import org.jetbrains.kotlin.codegen.inline.INLINE_FUN_VAR_SUFFIX import org.jetbrains.kotlin.codegen.inline.isFakeLocalVariableForInline -import org.jetbrains.kotlin.idea.debugger.evaluate.variables.VariableFinder +import org.jetbrains.org.objectweb.asm.Type as AsmType import org.jetbrains.kotlin.utils.getSafe import java.lang.reflect.Modifier import java.util.* -import org.jetbrains.kotlin.idea.debugger.evaluate.LOG as DebuggerLog +import kotlin.coroutines.Continuation class KotlinStackFrame(frame: StackFrameProxyImpl) : JavaStackFrame(StackFrameDescriptorImpl(frame, MethodsTracker()), true) { + private companion object { + private val LOG = Logger.getInstance(this::class.java) + } + private val kotlinVariableViewService = ToggleKotlinVariablesState.getService() override fun superBuildVariables(evaluationContext: EvaluationContextImpl, children: XValueChildrenList) { @@ -93,7 +98,7 @@ class KotlinStackFrame(frame: StackFrameProxyImpl) : JavaStackFrame(StackFrameDe ): Boolean { val thisObject = evaluationContext.frameProxy?.thisObject() ?: return false - if (thisObject.type().isSubtype(VariableFinder.CONTINUATION_TYPE)) { + if (thisObject.type().isSubtype(CONTINUATION_TYPE)) { ExistingInstanceThis.find(children)?.remove() return true } @@ -118,7 +123,7 @@ class KotlinStackFrame(frame: StackFrameProxyImpl) : JavaStackFrame(StackFrameDe val frameProxy = evaluationContext.frameProxy val variables = frameProxy?.safeVisibleVariables() ?: return false - val inlineDepth = VariableFinder.getInlineDepth(variables) + val inlineDepth = getInlineDepth(variables) val declarationSiteThis = variables.firstOrNull { v -> val name = v.name() name.endsWith(INLINE_FUN_VAR_SUFFIX) && name.dropInlineSuffix() == AsmUtil.INLINE_DECLARATION_SITE_THIS @@ -253,7 +258,7 @@ class KotlinStackFrame(frame: StackFrameProxyImpl) : JavaStackFrame(StackFrameDe } } - DebuggerLog.error( + LOG.error( "Can't find name/value lists, existing fields: " + Arrays.toString(XValueChildrenList::class.java.declaredFields) ) @@ -273,7 +278,7 @@ class KotlinStackFrame(frame: StackFrameProxyImpl) : JavaStackFrame(StackFrameDe } } - val inlineDepth = VariableFinder.getInlineDepth(allVisibleVariables) + val inlineDepth = getInlineDepth(allVisibleVariables) val (thisVariables, otherVariables) = allVisibleVariables.asSequence() .filter { !isHidden(it, inlineDepth) } @@ -281,7 +286,7 @@ class KotlinStackFrame(frame: StackFrameProxyImpl) : JavaStackFrame(StackFrameDe it.name() == THIS || it.name() == AsmUtil.THIS_IN_DEFAULT_IMPLS || it.name().startsWith(AsmUtil.LABELED_THIS_PARAMETER) - || (VariableFinder.inlinedThisRegex.matches(it.name())) + || (INLINED_THIS_REGEX.matches(it.name())) } val (mainThis, otherThis) = thisVariables @@ -298,7 +303,7 @@ class KotlinStackFrame(frame: StackFrameProxyImpl) : JavaStackFrame(StackFrameDe return isFakeLocalVariableForInline(name) || name.startsWith(DESTRUCTURED_LAMBDA_ARGUMENT_VARIABLE_PREFIX) || name.startsWith(AsmUtil.LOCAL_FUNCTION_VARIABLE_PREFIX) - || VariableFinder.getInlineDepth(variable.name()) != inlineDepth + || getInlineDepth(variable.name()) != inlineDepth || name == CONTINUATION_VARIABLE_NAME } @@ -313,7 +318,7 @@ class KotlinStackFrame(frame: StackFrameProxyImpl) : JavaStackFrame(StackFrameDe } name == AsmUtil.THIS_IN_DEFAULT_IMPLS -> clone(THIS + " (outer)", null) name == AsmUtil.RECEIVER_PARAMETER_NAME -> clone(THIS + " (receiver)", null) - VariableFinder.inlinedThisRegex.matches(name) -> { + INLINED_THIS_REGEX.matches(name) -> { val label = generateThisLabel(frame.getValue(this)?.type()) if (label != null) { clone(getThisName(label), label) @@ -348,7 +353,7 @@ class KotlinStackFrame(frame: StackFrameProxyImpl) : JavaStackFrame(StackFrameDe } private fun String.dropInlineSuffix(): String { - val depth = VariableFinder.getInlineDepth(this) + val depth = getInlineDepth(this) if (depth == 0) { return this } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/ToggleKotlinVariablesView.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/ToggleKotlinVariablesView.kt similarity index 97% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/ToggleKotlinVariablesView.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/ToggleKotlinVariablesView.kt index 6f825e5d38a..c19ce4225a1 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/ToggleKotlinVariablesView.kt +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/ToggleKotlinVariablesView.kt @@ -11,7 +11,7 @@ import com.intellij.openapi.actionSystem.ToggleAction import com.intellij.openapi.components.ServiceManager import com.intellij.xdebugger.XDebugSession import com.intellij.xdebugger.impl.XDebuggerUtilImpl -import org.jetbrains.kotlin.idea.KotlinFileTypeFactory +import org.jetbrains.kotlin.idea.core.KotlinFileTypeFactory class ToggleKotlinVariablesState { companion object { diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinBreakpointFiltersPanel.form b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinBreakpointFiltersPanel.form similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinBreakpointFiltersPanel.form rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinBreakpointFiltersPanel.form diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinBreakpointFiltersPanel.java b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinBreakpointFiltersPanel.java similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinBreakpointFiltersPanel.java rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinBreakpointFiltersPanel.java diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinBreakpointHandlerFactory.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinBreakpointHandlerFactory.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinBreakpointHandlerFactory.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinBreakpointHandlerFactory.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpoint.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpoint.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpoint.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpoint.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpointPropertiesPanel.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpointPropertiesPanel.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpointPropertiesPanel.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpointPropertiesPanel.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpointType.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpointType.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpointType.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpointType.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinLineBreakpoint.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinLineBreakpoint.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinLineBreakpoint.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinLineBreakpoint.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinLineBreakpointType.java b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinLineBreakpointType.java similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinLineBreakpointType.java rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinLineBreakpointType.java diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinPropertyBreakpointProperties.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinPropertyBreakpointProperties.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinPropertyBreakpointProperties.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinPropertyBreakpointProperties.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/breakpointTypeUtils.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/breakpointTypeUtils.kt similarity index 97% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/breakpointTypeUtils.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/breakpointTypeUtils.kt index af65e54980e..872a0926a26 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/breakpointTypeUtils.kt +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/breakpointTypeUtils.kt @@ -30,9 +30,9 @@ import com.intellij.xdebugger.XDebuggerUtil import com.intellij.xdebugger.XSourcePosition import com.intellij.xdebugger.impl.XSourcePositionImpl import org.jetbrains.kotlin.idea.KotlinFileType -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.getLineNumber import org.jetbrains.kotlin.idea.debugger.findElementAtLine -import org.jetbrains.kotlin.idea.refactoring.getLineNumber import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.endOffset import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/AddFieldBreakpointDialog.form b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/AddFieldBreakpointDialog.form similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/AddFieldBreakpointDialog.form rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/AddFieldBreakpointDialog.form diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/AddFieldBreakpointDialog.java b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/AddFieldBreakpointDialog.java similarity index 98% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/AddFieldBreakpointDialog.java rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/AddFieldBreakpointDialog.java index 8e84ef9ad11..1e5b7f40044 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/AddFieldBreakpointDialog.java +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/AddFieldBreakpointDialog.java @@ -28,7 +28,7 @@ import com.intellij.psi.search.GlobalSearchScope; import kotlin.Unit; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.idea.core.util.DescriptorMemberChooserObject; -import org.jetbrains.kotlin.idea.util.UiUtilKt; +import org.jetbrains.kotlin.idea.core.util.UiUtilsKt; import org.jetbrains.kotlin.psi.KtProperty; import javax.swing.*; @@ -52,7 +52,7 @@ public abstract class AddFieldBreakpointDialog extends DialogWrapper { @Override protected JComponent createCenterPanel() { - UiUtilKt.onTextChange( + UiUtilsKt.onTextChange( myClassChooser.getTextField(), (DocumentEvent e) -> { updateUI(); diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/fieldBreakpointDialogUtil.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/fieldBreakpointDialogUtil.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/fieldBreakpointDialogUtil.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/fieldBreakpointDialogUtil.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/debuggerUtil.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/debuggerUtil.kt similarity index 91% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/debuggerUtil.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/debuggerUtil.kt index 359de928f46..7e5462d05df 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/debuggerUtil.kt +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/debuggerUtil.kt @@ -18,11 +18,11 @@ import org.jetbrains.kotlin.codegen.coroutines.DO_RESUME_METHOD_NAME import org.jetbrains.kotlin.codegen.coroutines.INVOKE_SUSPEND_METHOD_NAME import org.jetbrains.kotlin.codegen.coroutines.continuationAsmTypes import org.jetbrains.kotlin.codegen.inline.KOTLIN_STRATA_NAME -import org.jetbrains.kotlin.idea.KotlinFileTypeFactory -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.KotlinFileTypeFactory +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches -import org.jetbrains.kotlin.idea.refactoring.getLineEndOffset -import org.jetbrains.kotlin.idea.refactoring.getLineStartOffset +import org.jetbrains.kotlin.idea.core.util.getLineEndOffset +import org.jetbrains.kotlin.idea.core.util.getLineStartOffset import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.load.java.JvmAbi @@ -249,34 +249,6 @@ fun findCallByEndToken(element: PsiElement): KtCallExpression? { } } -fun Type.isSubtype(className: String): Boolean = isSubtype(AsmType.getObjectType(className)) - -fun Type.isSubtype(type: AsmType): Boolean { - if (this.signature() == type.descriptor) { - return true - } - - if (type.sort != AsmType.OBJECT || this !is ClassType) { - return false - } - - val superTypeName = type.className - - if (allInterfaces().any { it.name() == superTypeName }) { - return true - } - - var superClass = superclass() - while (superClass != null) { - if (superClass.name() == superTypeName) { - return true - } - superClass = superClass.superclass() - } - - return false -} - val DebuggerContextImpl.canRunEvaluation: Boolean get() = debugProcess?.canRunEvaluation ?: false diff --git a/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinRuntimeTypeEvaluator.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinRuntimeTypeEvaluator.kt new file mode 100644 index 00000000000..8ab008c9cd7 --- /dev/null +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinRuntimeTypeEvaluator.kt @@ -0,0 +1,102 @@ +/* + * Copyright 2000-2019 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.debugger.evaluate + +import com.intellij.debugger.DebuggerBundle +import com.intellij.debugger.DebuggerInvocationUtil +import com.intellij.debugger.engine.ContextUtil +import com.intellij.debugger.engine.evaluation.EvaluateException +import com.intellij.debugger.engine.evaluation.EvaluateExceptionUtil +import com.intellij.debugger.engine.evaluation.EvaluationContextImpl +import com.intellij.debugger.engine.evaluation.expression.ExpressionEvaluator +import com.intellij.debugger.impl.DebuggerContextImpl +import com.intellij.debugger.impl.DebuggerUtilsEx +import com.intellij.debugger.ui.EditorEvaluationCommand +import com.intellij.openapi.editor.Editor +import com.intellij.openapi.progress.ProcessCanceledException +import com.intellij.openapi.progress.ProgressIndicator +import com.intellij.psi.CommonClassNames +import com.intellij.psi.search.GlobalSearchScope +import com.sun.jdi.ClassType +import com.sun.jdi.Value +import org.jetbrains.eval4j.jdi.asValue +import org.jetbrains.kotlin.idea.KotlinFileType +import org.jetbrains.kotlin.idea.debugger.getClassDescriptor +import org.jetbrains.kotlin.idea.util.application.runReadAction +import org.jetbrains.kotlin.psi.KtExpression +import org.jetbrains.kotlin.psi.KtPsiFactory +import org.jetbrains.kotlin.types.KotlinType +import org.jetbrains.org.objectweb.asm.Type as AsmType + +abstract class KotlinRuntimeTypeEvaluator( + editor: Editor?, + expression: KtExpression, + context: DebuggerContextImpl, + indicator: ProgressIndicator +) : EditorEvaluationCommand(editor, expression, context, indicator) { + + override fun threadAction() { + var type: KotlinType? = null + try { + type = evaluate() + } catch (ignored: ProcessCanceledException) { + } catch (ignored: EvaluateException) { + } finally { + typeCalculationFinished(type) + } + } + + protected abstract fun typeCalculationFinished(type: KotlinType?) + + override fun evaluate(evaluationContext: EvaluationContextImpl): KotlinType? { + val project = evaluationContext.project + + val evaluator = DebuggerInvocationUtil.commitAndRunReadAction(project) { + val codeFragment = KtPsiFactory(myElement.project) + .createExpressionCodeFragment(myElement.text, myElement.containingFile.context) + + val codeFragmentFactory = DebuggerUtilsEx.getCodeFragmentFactory(codeFragment.context, KotlinFileType.INSTANCE) + codeFragmentFactory.evaluatorBuilder.build(codeFragment, ContextUtil.getSourcePosition(evaluationContext)) + } + + val value = evaluator.evaluate(evaluationContext) + if (value != null) { + return runReadAction { getCastableRuntimeType(evaluationContext.debugProcess.searchScope, value) } + } + + throw EvaluateExceptionUtil.createEvaluateException(DebuggerBundle.message("evaluation.error.surrounded.expression.null")) + } + + companion object { + private fun getCastableRuntimeType(scope: GlobalSearchScope, value: Value): KotlinType? { + val myValue = value.asValue() + var psiClass = myValue.asmType.getClassDescriptor(scope) + if (psiClass != null) { + return psiClass.defaultType + } + + val type = value.type() + if (type is ClassType) { + val superclass = type.superclass() + if (superclass != null && CommonClassNames.JAVA_LANG_OBJECT != superclass.name()) { + psiClass = AsmType.getType(superclass.signature()).getClassDescriptor(scope) + if (psiClass != null) { + return psiClass.defaultType + } + } + + for (interfaceType in type.interfaces()) { + psiClass = AsmType.getType(interfaceType.signature()).getClassDescriptor(scope) + if (psiClass != null) { + return psiClass.defaultType + } + } + } + return null + } + } +} + diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/filter/DebuggerFiltersUtil.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/filter/DebuggerFiltersUtil.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/filter/DebuggerFiltersUtil.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/filter/DebuggerFiltersUtil.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/filter/KotlinDebuggerInternalClassesFilterProvider.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/filter/KotlinDebuggerInternalClassesFilterProvider.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/filter/KotlinDebuggerInternalClassesFilterProvider.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/filter/KotlinDebuggerInternalClassesFilterProvider.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/filter/KotlinSyntheticTypeComponentProvider.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/filter/KotlinSyntheticTypeComponentProvider.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/filter/KotlinSyntheticTypeComponentProvider.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/filter/KotlinSyntheticTypeComponentProvider.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/render/DelegatedPropertyFieldDescriptor.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/render/DelegatedPropertyFieldDescriptor.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/render/DelegatedPropertyFieldDescriptor.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/render/DelegatedPropertyFieldDescriptor.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/render/KotlinClassWithDelegatedPropertyRenderer.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/render/KotlinClassWithDelegatedPropertyRenderer.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/render/KotlinClassWithDelegatedPropertyRenderer.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/render/KotlinClassWithDelegatedPropertyRenderer.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/DebugProcessImplHelper.java b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/DebugProcessImplHelper.java similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/DebugProcessImplHelper.java rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/DebugProcessImplHelper.java diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/DebuggerSteppingHelper.java b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/DebuggerSteppingHelper.java similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/DebuggerSteppingHelper.java rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/DebuggerSteppingHelper.java diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinBasicStepMethodFilter.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinBasicStepMethodFilter.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinBasicStepMethodFilter.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinBasicStepMethodFilter.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinLambdaMethodFilter.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinLambdaMethodFilter.kt similarity index 98% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinLambdaMethodFilter.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinLambdaMethodFilter.kt index 4b1e5764d2c..659ec672961 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinLambdaMethodFilter.kt +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinLambdaMethodFilter.kt @@ -22,8 +22,8 @@ import com.intellij.debugger.engine.DebugProcessImpl import com.intellij.util.Range import com.sun.jdi.Location import org.jetbrains.kotlin.codegen.coroutines.isResumeImplMethodNameFromAnyLanguageSettings +import org.jetbrains.kotlin.idea.core.util.isMultiLine import org.jetbrains.kotlin.idea.debugger.isInsideInlineArgument -import org.jetbrains.kotlin.idea.refactoring.isMultiLine import org.jetbrains.kotlin.psi.KtBlockExpression import org.jetbrains.kotlin.psi.KtFunction import org.jetbrains.kotlin.util.OperatorNameConventions diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinLambdaSmartStepIntoTarget.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinLambdaSmartStepIntoTarget.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinLambdaSmartStepIntoTarget.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinLambdaSmartStepIntoTarget.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinMethodSmartStepIntoTarget.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinMethodSmartStepIntoTarget.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinMethodSmartStepIntoTarget.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinMethodSmartStepIntoTarget.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSimpleGetterProvider.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSimpleGetterProvider.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSimpleGetterProvider.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSimpleGetterProvider.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSmartStepIntoHandler.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSmartStepIntoHandler.kt similarity index 99% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSmartStepIntoHandler.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSmartStepIntoHandler.kt index d5e24fbabfa..0065473a2dd 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSmartStepIntoHandler.kt +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSmartStepIntoHandler.kt @@ -33,8 +33,8 @@ import org.jetbrains.kotlin.config.JvmTarget import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.caches.resolve.analyzeWithAllCompilerChecks -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.load.java.isFromJava import org.jetbrains.kotlin.psi.* diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinStepActionFactory.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinStepActionFactory.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinStepActionFactory.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinStepActionFactory.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinStepOverInlineFilter.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinStepOverInlineFilter.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinStepOverInlineFilter.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinStepOverInlineFilter.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinStepOverInlinedLinesHint.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinStepOverInlinedLinesHint.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinStepOverInlinedLinesHint.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinStepOverInlinedLinesHint.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingCommandProvider.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingCommandProvider.kt similarity index 99% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingCommandProvider.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingCommandProvider.kt index 8f39e472d79..86aa8c5a314 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingCommandProvider.kt +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingCommandProvider.kt @@ -38,7 +38,7 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.debugger.* import org.jetbrains.kotlin.idea.debugger.stepping.DexBytecode.GOTO import org.jetbrains.kotlin.idea.debugger.stepping.DexBytecode.MOVE @@ -46,8 +46,8 @@ import org.jetbrains.kotlin.idea.debugger.stepping.DexBytecode.RETURN import org.jetbrains.kotlin.idea.debugger.stepping.DexBytecode.RETURN_OBJECT import org.jetbrains.kotlin.idea.debugger.stepping.DexBytecode.RETURN_VOID import org.jetbrains.kotlin.idea.debugger.stepping.DexBytecode.RETURN_WIDE -import org.jetbrains.kotlin.idea.refactoring.getLineNumber -import org.jetbrains.kotlin.idea.refactoring.getLineStartOffset +import org.jetbrains.kotlin.idea.core.util.getLineNumber +import org.jetbrains.kotlin.idea.core.util.getLineStartOffset import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.psi.* diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingConfigurableUi.form b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingConfigurableUi.form similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingConfigurableUi.form rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingConfigurableUi.form diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingConfigurableUi.java b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingConfigurableUi.java similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingConfigurableUi.java rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingConfigurableUi.java diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSuspendCallStepOverFilter.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSuspendCallStepOverFilter.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSuspendCallStepOverFilter.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSuspendCallStepOverFilter.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/RequestHintWithMethodFilter.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/RequestHintWithMethodFilter.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/stepping/RequestHintWithMethodFilter.kt rename to idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/RequestHintWithMethodFilter.kt diff --git a/idea/jvm-debugger/jvm-debugger-evaluation/build.gradle.kts b/idea/jvm-debugger/jvm-debugger-evaluation/build.gradle.kts new file mode 100644 index 00000000000..0558d7aec7d --- /dev/null +++ b/idea/jvm-debugger/jvm-debugger-evaluation/build.gradle.kts @@ -0,0 +1,21 @@ +plugins { + kotlin("jvm") + id("jps-compatible") +} + +dependencies { + compile(project(":compiler:backend")) + compile(project(":idea:jvm-debugger:eval4j")) + compile(project(":idea:idea-core")) + compile(project(":idea:idea-j2k")) + compile(project(":idea:jvm-debugger:jvm-debugger-util")) + compile(files("${System.getProperty("java.home")}/../lib/tools.jar")) + + testCompile(project(":kotlin-test:kotlin-test-junit")) + testCompile(commonDep("junit:junit")) +} + +sourceSets { + "main" { projectDefault() } + "test" { none() } +} \ No newline at end of file diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldCompletionInformationProvider.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldCompletionInformationProvider.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldCompletionInformationProvider.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldCompletionInformationProvider.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldExpressionCodegenExtension.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldExpressionCodegenExtension.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldExpressionCodegenExtension.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldExpressionCodegenExtension.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldKotlinIndicesHelperExtension.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldKotlinIndicesHelperExtension.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldKotlinIndicesHelperExtension.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldKotlinIndicesHelperExtension.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldSyntheticScopeProvider.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldSyntheticScopeProvider.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldSyntheticScopeProvider.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldSyntheticScopeProvider.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt similarity index 88% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt index dfc80640741..106b823129b 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt +++ b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt @@ -38,19 +38,18 @@ import com.intellij.util.concurrency.Semaphore import com.sun.jdi.* import org.jetbrains.annotations.TestOnly import org.jetbrains.eval4j.jdi.asValue -import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.idea.KotlinFileType -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils -import org.jetbrains.kotlin.idea.debugger.KotlinEditorTextProvider +import org.jetbrains.kotlin.idea.core.util.getKotlinJvmRuntimeMarkerClass import org.jetbrains.kotlin.idea.debugger.evaluate.compilation.DebugLabelPropertyDescriptorProvider +import org.jetbrains.kotlin.idea.debugger.getClassDescriptor +import org.jetbrains.kotlin.idea.debugger.getContextElement import org.jetbrains.kotlin.idea.j2k.JavaToKotlinConverterFactory -import org.jetbrains.kotlin.idea.refactoring.convertToKotlin -import org.jetbrains.kotlin.idea.refactoring.j2k -import org.jetbrains.kotlin.idea.refactoring.j2kText +import org.jetbrains.kotlin.idea.j2k.convertToKotlin +import org.jetbrains.kotlin.idea.j2k.j2k +import org.jetbrains.kotlin.idea.j2k.j2kText import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.runReadAction -import org.jetbrains.kotlin.idea.versions.getKotlinJvmRuntimeMarkerClass import org.jetbrains.kotlin.j2k.AfterConversionPass import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded @@ -298,42 +297,6 @@ class KotlinCodeFragmentFactory : CodeFragmentFactory() { const val FAKE_JAVA_CONTEXT_FUNCTION_NAME = "_java_locals_debug_fun_" const val FAKE_JAVA_THIS_NAME = "\$this\$_java_locals_debug_fun_" - fun getContextElement(elementAt: PsiElement?): PsiElement? { - if (elementAt == null) return null - - if (elementAt is PsiCodeBlock) { - return getContextElement(elementAt.context?.context) - } - - if (elementAt is KtLightClass) { - return getContextElement(elementAt.kotlinOrigin) - } - - val containingFile = elementAt.containingFile - if (containingFile is PsiJavaFile) return elementAt - if (containingFile !is KtFile) return null - - // elementAt can be PsiWhiteSpace when codeFragment is created from line start offset (in case of first opening EE window) - val lineStartOffset = if (elementAt is PsiWhiteSpace || elementAt is PsiComment) { - PsiTreeUtil.skipSiblingsForward(elementAt, PsiWhiteSpace::class.java, PsiComment::class.java)?.textOffset - ?: elementAt.textOffset - } else { - elementAt.textOffset - } - - fun KtElement.takeIfAcceptedAsCodeFragmentContext() = takeIf { KotlinEditorTextProvider.isAcceptedAsCodeFragmentContext(it) } - - PsiTreeUtil.findElementOfClassAtOffset(containingFile, lineStartOffset, KtExpression::class.java, false) - ?.takeIfAcceptedAsCodeFragmentContext() - ?.let { return CodeInsightUtils.getTopmostElementAtOffset(it, lineStartOffset, KtExpression::class.java) } - - KotlinEditorTextProvider.findExpressionInner(elementAt, true) - ?.takeIfAcceptedAsCodeFragmentContext() - ?.let { return it } - - return containingFile - } - private fun Map.kotlinVariablesAsText(project: Project): String { val sb = StringBuilder() diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluatorBuilder.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluatorBuilder.kt similarity index 90% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluatorBuilder.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluatorBuilder.kt index 5232913d440..a784105cb5f 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluatorBuilder.kt +++ b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluatorBuilder.kt @@ -26,9 +26,7 @@ import com.intellij.openapi.diagnostic.Attachment import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.progress.ProcessCanceledException import com.intellij.openapi.project.DumbService -import com.intellij.psi.JavaPsiFacade import com.intellij.psi.PsiElement -import com.intellij.psi.search.GlobalSearchScope import com.intellij.testFramework.runInEdtAndWait import com.sun.jdi.* import com.sun.jdi.Value @@ -38,45 +36,37 @@ import org.jetbrains.eval4j.jdi.JDIEval import org.jetbrains.eval4j.jdi.asJdiValue import org.jetbrains.eval4j.jdi.asValue import org.jetbrains.eval4j.jdi.makeInitialFrame -import org.jetbrains.kotlin.builtins.DefaultBuiltIns -import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap import org.jetbrains.kotlin.caches.resolve.KotlinCacheService -import org.jetbrains.kotlin.codegen.* -import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.descriptors.findClassAcrossModuleDependencies import org.jetbrains.kotlin.diagnostics.DiagnosticFactory import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.diagnostics.Severity import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages -import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaClassDescriptor +import org.jetbrains.kotlin.idea.core.util.attachmentByPsiFile +import org.jetbrains.kotlin.idea.core.util.mergeAttachments +import org.jetbrains.kotlin.idea.core.util.runInReadActionWithWriteActionPriorityWithPCE import org.jetbrains.kotlin.idea.debugger.DebuggerUtils import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches.Companion.compileCodeFragmentCacheAware +import org.jetbrains.kotlin.idea.debugger.evaluate.classLoading.GENERATED_CLASS_NAME +import org.jetbrains.kotlin.idea.debugger.evaluate.classLoading.GENERATED_FUNCTION_NAME import org.jetbrains.kotlin.idea.debugger.evaluate.compilation.* import org.jetbrains.kotlin.idea.debugger.evaluate.compilingEvaluator.loadClassesSafely import org.jetbrains.kotlin.idea.debugger.evaluate.variables.EvaluatorValueConverter import org.jetbrains.kotlin.idea.debugger.evaluate.variables.VariableFinder import org.jetbrains.kotlin.idea.debugger.safeLocation import org.jetbrains.kotlin.idea.debugger.safeMethod -import org.jetbrains.kotlin.idea.runInReadActionWithWriteActionPriorityWithPCE import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.runReadAction -import org.jetbrains.kotlin.idea.util.attachment.attachmentByPsiFile -import org.jetbrains.kotlin.idea.util.attachment.mergeAttachments import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.AnalyzingUtils import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.isInlineClassType import org.jetbrains.kotlin.resolve.jvm.AsmTypes -import org.jetbrains.kotlin.resolve.jvm.JvmClassName import org.jetbrains.org.objectweb.asm.* -import org.jetbrains.org.objectweb.asm.Type import org.jetbrains.org.objectweb.asm.tree.ClassNode import java.util.* -internal val LOG = Logger.getInstance("#org.jetbrains.kotlin.idea.debugger.evaluate.KotlinEvaluator") -internal const val GENERATED_FUNCTION_NAME = "generated_for_debugger_fun" -internal const val GENERATED_CLASS_NAME = "Generated_for_debugger_class" +internal val LOG = Logger.getInstance(KotlinEvaluator::class.java) object KotlinEvaluatorBuilder : EvaluatorBuilder { override fun build(codeFragment: PsiElement, position: SourcePosition?): ExpressionEvaluator { @@ -182,7 +172,7 @@ class KotlinEvaluator(val codeFragment: KtCodeFragment, val sourcePosition: Sour val moduleDescriptor = analysisResult.moduleDescriptor val result = CodeFragmentCompiler(context).compile(codeFragment, bindingContext, moduleDescriptor) - return CompiledDataDescriptor.from(result, sourcePosition) + return createCompiledDataDescriptor(result, sourcePosition) } private fun KtCodeFragment.wrapToStringIfNeeded(bindingContext: BindingContext): Boolean { @@ -375,31 +365,6 @@ class KotlinEvaluator(val codeFragment: KtCodeFragment, val sourcePosition: Sour } } -fun Type.getClassDescriptor( - scope: GlobalSearchScope, - mapBuiltIns: Boolean = true, - moduleDescriptor: ModuleDescriptor = DefaultBuiltIns.Instance.builtInsModule -): ClassDescriptor? { - if (AsmUtil.isPrimitive(this)) return null - - val jvmName = JvmClassName.byInternalName(internalName).fqNameForClassNameWithoutDollars - - if (mapBuiltIns) { - val mappedName = JavaToKotlinClassMap.mapJavaToKotlin(jvmName) - if (mappedName != null) { - moduleDescriptor.findClassAcrossModuleDependencies(mappedName)?.let { return it } - } - } - - return runReadAction { - val classes = JavaPsiFacade.getInstance(scope.project).findClasses(jvmName.asString(), scope) - if (classes.isEmpty()) null - else { - classes.first().getJavaClassDescriptor() - } - } -} - private fun VirtualMachine.executeWithBreakpointsDisabled(block: () -> T): T { val allRequests = eventRequestManager().breakpointRequests() + eventRequestManager().classPrepareRequests() @@ -444,5 +409,31 @@ private fun reportError(codeFragment: KtCodeFragment, position: SourcePosition?, } } +fun createCompiledDataDescriptor(result: CodeFragmentCompiler.CompilationResult, sourcePosition: SourcePosition?): CompiledDataDescriptor { + val localFunctionSuffixes = result.localFunctionSuffixes + + val dumbParameters = ArrayList(result.parameterInfo.parameters.size) + for (parameter in result.parameterInfo.parameters) { + val dumb = parameter.dumb + if (dumb.kind == CodeFragmentParameter.Kind.LOCAL_FUNCTION) { + val suffix = localFunctionSuffixes[dumb] + if (suffix != null) { + dumbParameters += dumb.copy(name = dumb.name + suffix) + continue + } + } + + dumbParameters += dumb + } + + return CompiledDataDescriptor( + result.classes, + dumbParameters, + result.parameterInfo.crossingBounds, + result.mainMethodSignature, + sourcePosition + ) +} + private fun evaluationException(msg: String): Nothing = throw EvaluateExceptionUtil.createEvaluateException(msg) private fun evaluationException(e: Throwable): Nothing = throw EvaluateExceptionUtil.createEvaluateException(e) \ No newline at end of file diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinRuntimeTypeEvaluator.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinRuntimeTypeEvaluator.kt similarity index 98% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinRuntimeTypeEvaluator.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinRuntimeTypeEvaluator.kt index a84ca771935..6cd6391a9d3 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinRuntimeTypeEvaluator.kt +++ b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinRuntimeTypeEvaluator.kt @@ -33,6 +33,7 @@ import com.intellij.psi.search.GlobalSearchScope import com.sun.jdi.ClassType import com.sun.jdi.Value import org.jetbrains.eval4j.jdi.asValue +import org.jetbrains.kotlin.idea.debugger.getClassDescriptor import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.psi.KtExpression import org.jetbrains.kotlin.psi.KtPsiFactory diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/AbstractAndroidClassLoadingAdapter.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/AbstractAndroidClassLoadingAdapter.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/AbstractAndroidClassLoadingAdapter.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/AbstractAndroidClassLoadingAdapter.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/AndroidDexer.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/AndroidDexer.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/AndroidDexer.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/AndroidDexer.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/AndroidOClassLoadingAdapter.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/AndroidOClassLoadingAdapter.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/AndroidOClassLoadingAdapter.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/AndroidOClassLoadingAdapter.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/ClassLoadingAdapter.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/ClassLoadingAdapter.kt similarity index 98% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/ClassLoadingAdapter.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/ClassLoadingAdapter.kt index cd1fe9e1c00..99559db3972 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/ClassLoadingAdapter.kt +++ b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/ClassLoadingAdapter.kt @@ -21,7 +21,6 @@ import com.sun.jdi.ArrayType import com.sun.jdi.ClassLoaderReference import com.sun.jdi.Value import org.jetbrains.kotlin.idea.debugger.evaluate.ExecutionContext -import org.jetbrains.kotlin.idea.debugger.evaluate.GENERATED_FUNCTION_NAME import org.jetbrains.org.objectweb.asm.ClassReader import org.jetbrains.org.objectweb.asm.Label import org.jetbrains.org.objectweb.asm.tree.* diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/OrdinaryClassLoadingAdapter.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/OrdinaryClassLoadingAdapter.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/OrdinaryClassLoadingAdapter.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/OrdinaryClassLoadingAdapter.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentCompiler.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentCompiler.kt similarity index 97% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentCompiler.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentCompiler.kt index 6903ee04bd6..7be4824b2dd 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentCompiler.kt +++ b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentCompiler.kt @@ -19,6 +19,9 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.descriptors.impl.* import org.jetbrains.kotlin.idea.debugger.evaluate.* import org.jetbrains.kotlin.idea.debugger.evaluate.classLoading.ClassToLoad +import org.jetbrains.kotlin.idea.debugger.evaluate.classLoading.GENERATED_CLASS_NAME +import org.jetbrains.kotlin.idea.debugger.evaluate.classLoading.GENERATED_FUNCTION_NAME +import org.jetbrains.kotlin.idea.debugger.evaluate.compilation.CompiledDataDescriptor.MethodSignature import org.jetbrains.kotlin.idea.project.languageVersionSettings import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.incremental.components.LookupLocation @@ -50,8 +53,6 @@ class CodeFragmentCompiler(private val executionContext: ExecutionContext) { val mainMethodSignature: MethodSignature ) - data class MethodSignature(val parameterTypes: List, val returnType: Type) - fun compile(codeFragment: KtCodeFragment, bindingContext: BindingContext, moduleDescriptor: ModuleDescriptor): CompilationResult { return runReadAction { doCompile(codeFragment, bindingContext, moduleDescriptor) } } @@ -201,6 +202,8 @@ class CodeFragmentCompiler(private val executionContext: ExecutionContext) { } } + + private class EvaluatorMemberScopeForMethod(private val methodDescriptor: SimpleFunctionDescriptor) : MemberScopeImpl() { override fun getContributedFunctions(name: Name, location: LookupLocation): Collection { return if (name == methodDescriptor.name) { diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentParameterAnalyzer.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentParameterAnalyzer.kt similarity index 96% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentParameterAnalyzer.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentParameterAnalyzer.kt index 88bdc79dc98..e90f5ed92aa 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentParameterAnalyzer.kt +++ b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentParameterAnalyzer.kt @@ -35,29 +35,6 @@ import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitReceiver import org.jetbrains.kotlin.resolve.source.getPsi import org.jetbrains.kotlin.types.KotlinType -interface CodeFragmentParameter { - val kind: Kind - val name: String - val debugString: String - - enum class Kind { - ORDINARY, DELEGATED, EXTENSION_RECEIVER, DISPATCH_RECEIVER, COROUTINE_CONTEXT, LOCAL_FUNCTION, - FAKE_JAVA_OUTER_CLASS, FIELD_VAR, DEBUG_LABEL - } - - class Smart( - val dumb: Dumb, - override val targetType: KotlinType, - override val targetDescriptor: DeclarationDescriptor - ) : CodeFragmentParameter by dumb, CodeFragmentCodegenInfo.IParameter - - data class Dumb( - override val kind: Kind, - override val name: String, - override val debugString: String = name - ) : CodeFragmentParameter -} - class CodeFragmentParameterInfo( val parameters: List, val crossingBounds: Set diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/DebugLabelPropertyDescriptorProvider.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/DebugLabelPropertyDescriptorProvider.kt similarity index 98% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/DebugLabelPropertyDescriptorProvider.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/DebugLabelPropertyDescriptorProvider.kt index 88fbdbde35e..72f40de403b 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/DebugLabelPropertyDescriptorProvider.kt +++ b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/DebugLabelPropertyDescriptorProvider.kt @@ -13,8 +13,8 @@ import com.intellij.xdebugger.impl.XDebugSessionImpl import com.intellij.xdebugger.impl.ui.tree.ValueMarkup import org.jetbrains.kotlin.builtins.PrimitiveType import com.sun.jdi.* +import org.jetbrains.kotlin.backend.common.SimpleMemberScope import com.sun.jdi.Type as JdiType -import org.jetbrains.kotlin.backend.common.lower.SimpleMemberScope import org.jetbrains.kotlin.builtins.DefaultBuiltIns import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.* @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.descriptors.impl.DeclarationDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.PropertyDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.PropertyGetterDescriptorImpl -import org.jetbrains.kotlin.idea.debugger.evaluate.getClassDescriptor +import org.jetbrains.kotlin.idea.debugger.getClassDescriptor import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.KtCodeFragment diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilingEvaluator.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilingEvaluator.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilingEvaluator.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilingEvaluator.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/surroundWith/KotlinDebuggerExpressionSurroundDescriptor.java b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/surroundWith/KotlinDebuggerExpressionSurroundDescriptor.java similarity index 77% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/surroundWith/KotlinDebuggerExpressionSurroundDescriptor.java rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/surroundWith/KotlinDebuggerExpressionSurroundDescriptor.java index 3c8e551bc29..9fcd74d268b 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/surroundWith/KotlinDebuggerExpressionSurroundDescriptor.java +++ b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/surroundWith/KotlinDebuggerExpressionSurroundDescriptor.java @@ -14,13 +14,14 @@ * limitations under the License. */ -package org.jetbrains.kotlin.idea.debugger.surroundWith; +package org.jetbrains.kotlin.idea.debugger.evaluate.surroundWith; import com.intellij.lang.surroundWith.Surrounder; import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.idea.codeInsight.surroundWith.expression.KotlinExpressionSurroundDescriptor; +import org.jetbrains.kotlin.idea.core.surroundWith.KotlinExpressionSurroundDescriptorBase; +import org.jetbrains.kotlin.idea.debugger.surroundWith.KotlinRuntimeTypeCastSurrounder; -public class KotlinDebuggerExpressionSurroundDescriptor extends KotlinExpressionSurroundDescriptor { +public class KotlinDebuggerExpressionSurroundDescriptor extends KotlinExpressionSurroundDescriptorBase { private static final Surrounder[] SURROUNDERS = { new KotlinRuntimeTypeCastSurrounder() diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/surroundWith/KotlinRuntimeTypeCastSurrounder.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/surroundWith/KotlinRuntimeTypeCastSurrounder.kt similarity index 93% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/surroundWith/KotlinRuntimeTypeCastSurrounder.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/surroundWith/KotlinRuntimeTypeCastSurrounder.kt index a4cb1a1538f..db494e41776 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/surroundWith/KotlinRuntimeTypeCastSurrounder.kt +++ b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/surroundWith/KotlinRuntimeTypeCastSurrounder.kt @@ -1,6 +1,6 @@ /* - * Copyright 2000-2018 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. + * Copyright 2000-2018 JetBrains s.r.o. 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.debugger.surroundWith @@ -20,9 +20,9 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.util.TextRange import org.jetbrains.kotlin.idea.KotlinBundle import org.jetbrains.kotlin.idea.caches.resolve.analyze -import org.jetbrains.kotlin.idea.codeInsight.surroundWith.expression.KotlinExpressionSurrounder import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinRuntimeTypeEvaluator import org.jetbrains.kotlin.idea.core.ShortenReferences +import org.jetbrains.kotlin.idea.core.surroundWith.KotlinExpressionSurrounder import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/variables/EvaluatorValueConverter.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/variables/EvaluatorValueConverter.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/variables/EvaluatorValueConverter.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/variables/EvaluatorValueConverter.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/variables/VariableFinder.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/variables/VariableFinder.kt similarity index 89% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/variables/VariableFinder.kt rename to idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/variables/VariableFinder.kt index 0f21ef4d52b..33997ba7673 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/variables/VariableFinder.kt +++ b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/variables/VariableFinder.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.codegen.AsmUtil.getLabeledThisName import org.jetbrains.kotlin.codegen.coroutines.CONTINUATION_VARIABLE_NAME import org.jetbrains.kotlin.codegen.inline.INLINE_FUN_VAR_SUFFIX import org.jetbrains.kotlin.codegen.inline.INLINE_TRANSFORMATION_SUFFIX +import org.jetbrains.kotlin.idea.core.util.mergeAttachments import org.jetbrains.kotlin.idea.debugger.* import org.jetbrains.kotlin.idea.debugger.evaluate.ExecutionContext import org.jetbrains.kotlin.idea.debugger.evaluate.LOG @@ -23,10 +24,7 @@ import org.jetbrains.kotlin.idea.debugger.evaluate.compilation.CodeFragmentParam import org.jetbrains.kotlin.idea.debugger.evaluate.compilation.CodeFragmentParameter.* import org.jetbrains.kotlin.idea.debugger.evaluate.compilation.DebugLabelPropertyDescriptorProvider import org.jetbrains.kotlin.idea.util.application.runReadAction -import org.jetbrains.kotlin.idea.util.attachment.mergeAttachments import org.jetbrains.kotlin.load.java.JvmAbi -import org.jetbrains.kotlin.load.java.JvmAbi.LOCAL_VARIABLE_NAME_PREFIX_INLINE_ARGUMENT -import org.jetbrains.kotlin.load.java.JvmAbi.LOCAL_VARIABLE_NAME_PREFIX_INLINE_FUNCTION import org.jetbrains.kotlin.resolve.jvm.JvmClassName import kotlin.coroutines.Continuation import org.jetbrains.org.objectweb.asm.Type as AsmType @@ -38,13 +36,6 @@ class VariableFinder(private val context: ExecutionContext) { companion object { private const val USE_UNSAFE_FALLBACK = true - val CONTINUATION_TYPE: AsmType = AsmType.getType(Continuation::class.java) - - val SUSPEND_LAMBDA_CLASSES = listOf( - "kotlin.coroutines.jvm.internal.SuspendLambda", - "kotlin.coroutines.jvm.internal.RestrictedSuspendLambda" - ) - fun variableNotFound(context: ExecutionContext, message: String): Exception { val frameProxy = context.frameProxy val location = frameProxy.safeLocation() @@ -75,51 +66,11 @@ class VariableFinder(private val context: ExecutionContext) { return EvaluateExceptionUtil.createEvaluateException(message) } - val inlinedThisRegex = getLocalVariableNameRegexInlineAware(AsmUtil.INLINE_DECLARATION_SITE_THIS) - private fun getCapturedVariableNameRegex(capturedName: String): Regex { val escapedName = Regex.escape(capturedName) val escapedSuffix = Regex.escape(INLINE_TRANSFORMATION_SUFFIX) return Regex("^$escapedName(?:$escapedSuffix)?$") } - - private fun getLocalVariableNameRegexInlineAware(name: String): Regex { - val escapedName = Regex.escape(name) - val escapedSuffix = Regex.escape(INLINE_FUN_VAR_SUFFIX) - return Regex("^$escapedName(?:$escapedSuffix)*$") - } - - fun getInlineDepth(variables: List): Int { - val inlineFunVariables = variables - .filter { it.name().startsWith(LOCAL_VARIABLE_NAME_PREFIX_INLINE_FUNCTION) } - - if (inlineFunVariables.isEmpty()) { - return 0 - } - - val closestInlineFun = inlineFunVariables.maxBy { it.variable }!!.variable - val inlineLambdaDepth = variables - .count { it.name().startsWith(LOCAL_VARIABLE_NAME_PREFIX_INLINE_ARGUMENT) && it.variable > closestInlineFun } - - return maxOf(0, inlineFunVariables.size - inlineLambdaDepth) - } - - fun getInlineDepth(variableName: String): Int { - var endIndex = variableName.length - var depth = 0 - - val suffixLen = INLINE_FUN_VAR_SUFFIX.length - while (endIndex >= suffixLen) { - if (variableName.substring(endIndex - suffixLen, endIndex) != INLINE_FUN_VAR_SUFFIX) { - break - } - - depth++ - endIndex -= suffixLen - } - - return depth - } } private val evaluatorValueConverter = EvaluatorValueConverter(context) @@ -274,7 +225,7 @@ class VariableFinder(private val context: ExecutionContext) { if (inlineDepth > 0) { variables.namedEntitySequence() - .filter { it.name.matches(inlinedThisRegex) && getInlineDepth(it.name) == inlineDepth && kind.typeMatches(it.type) } + .filter { it.name.matches(INLINED_THIS_REGEX) && getInlineDepth(it.name) == inlineDepth && kind.typeMatches(it.type) } .mapNotNull { it.unwrapAndCheck(kind) } .firstOrNull() ?.let { return it } @@ -409,7 +360,7 @@ class VariableFinder(private val context: ExecutionContext) { name.startsWith(AsmUtil.LABELED_THIS_PARAMETER) || name == AsmUtil.RECEIVER_PARAMETER_NAME || name == AsmUtil.THIS_IN_DEFAULT_IMPLS - || inlinedThisRegex.matches(name) + || INLINED_THIS_REGEX.matches(name) if (kind is VariableKind.ExtensionThis) { variables.namedEntitySequence() diff --git a/idea/jvm-debugger/jvm-debugger-sequence/build.gradle.kts b/idea/jvm-debugger/jvm-debugger-sequence/build.gradle.kts new file mode 100644 index 00000000000..9501cc541f7 --- /dev/null +++ b/idea/jvm-debugger/jvm-debugger-sequence/build.gradle.kts @@ -0,0 +1,20 @@ +plugins { + kotlin("jvm") + id("jps-compatible") +} + +dependencies { + compile(project(":compiler:backend")) + compile(project(":idea:ide-common")) + compile(files("${System.getProperty("java.home")}/../lib/tools.jar")) + + compileOnly(intellijPluginDep("stream-debugger")) + + testCompile(project(":kotlin-test:kotlin-test-junit")) + testCompile(commonDep("junit:junit")) +} + +sourceSets { + "main" { projectDefault() } + "test" { none() } +} \ No newline at end of file diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/collections/KotlinCollectionLibrarySupport.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/collections/KotlinCollectionLibrarySupport.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/collections/KotlinCollectionLibrarySupport.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/collections/KotlinCollectionLibrarySupport.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/collections/KotlinCollectionSupportProvider.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/collections/KotlinCollectionSupportProvider.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/collections/KotlinCollectionSupportProvider.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/collections/KotlinCollectionSupportProvider.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/java/JavaStandardLibrarySupportProvider.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/java/JavaStandardLibrarySupportProvider.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/java/JavaStandardLibrarySupportProvider.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/java/JavaStandardLibrarySupportProvider.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/java/StreamExLibrarySupportProvider.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/java/StreamExLibrarySupportProvider.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/java/StreamExLibrarySupportProvider.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/java/StreamExLibrarySupportProvider.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/sequence/KotlinSequenceSupportProvider.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/sequence/KotlinSequenceSupportProvider.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/sequence/KotlinSequenceSupportProvider.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/sequence/KotlinSequenceSupportProvider.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/sequence/KotlinSequencesSupport.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/sequence/KotlinSequencesSupport.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/sequence/KotlinSequencesSupport.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/lib/sequence/KotlinSequencesSupport.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/CallCheckerWithNameHeuristics.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/CallCheckerWithNameHeuristics.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/CallCheckerWithNameHeuristics.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/CallCheckerWithNameHeuristics.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/CallTypeExtractor.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/CallTypeExtractor.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/CallTypeExtractor.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/CallTypeExtractor.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/KotlinPsiUtil.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/KotlinPsiUtil.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/KotlinPsiUtil.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/KotlinPsiUtil.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/StreamCallChecker.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/StreamCallChecker.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/StreamCallChecker.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/StreamCallChecker.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/collections/CollectionChainTransformer.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/collections/CollectionChainTransformer.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/collections/CollectionChainTransformer.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/collections/CollectionChainTransformer.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/collections/KotlinCollectionChainBuilder.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/collections/KotlinCollectionChainBuilder.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/collections/KotlinCollectionChainBuilder.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/collections/KotlinCollectionChainBuilder.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/collections/KotlinCollectionsTypeExtractor.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/collections/KotlinCollectionsTypeExtractor.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/collections/KotlinCollectionsTypeExtractor.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/collections/KotlinCollectionsTypeExtractor.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/KotlinChainBuilderBase.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/KotlinChainBuilderBase.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/KotlinChainBuilderBase.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/KotlinChainBuilderBase.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/KotlinChainTransformerImpl.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/KotlinChainTransformerImpl.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/KotlinChainTransformerImpl.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/KotlinChainTransformerImpl.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/PackageBasedCallChecker.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/PackageBasedCallChecker.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/PackageBasedCallChecker.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/PackageBasedCallChecker.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/TerminatedChainBuilder.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/TerminatedChainBuilder.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/TerminatedChainBuilder.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/impl/TerminatedChainBuilder.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/java/JavaStreamChainTypeExtractor.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/java/JavaStreamChainTypeExtractor.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/java/JavaStreamChainTypeExtractor.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/java/JavaStreamChainTypeExtractor.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/java/StandardLibraryCallChecker.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/java/StandardLibraryCallChecker.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/java/StandardLibraryCallChecker.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/java/StandardLibraryCallChecker.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/java/StreamExCallChecker.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/java/StreamExCallChecker.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/java/StreamExCallChecker.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/java/StreamExCallChecker.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/sequence/SequenceCallChecker.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/sequence/SequenceCallChecker.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/sequence/SequenceCallChecker.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/sequence/SequenceCallChecker.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/sequence/SequenceCallCheckerWithNameHeuristics.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/sequence/SequenceCallCheckerWithNameHeuristics.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/sequence/SequenceCallCheckerWithNameHeuristics.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/sequence/SequenceCallCheckerWithNameHeuristics.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/sequence/SequenceTypeExtractor.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/sequence/SequenceTypeExtractor.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/sequence/SequenceTypeExtractor.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/psi/sequence/SequenceTypeExtractor.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/resolve/ChunkedResolver.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/resolve/ChunkedResolver.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/resolve/ChunkedResolver.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/resolve/ChunkedResolver.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/resolve/FilteredMapResolver.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/resolve/FilteredMapResolver.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/resolve/FilteredMapResolver.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/resolve/FilteredMapResolver.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/resolve/WindowedResolver.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/resolve/WindowedResolver.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/resolve/WindowedResolver.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/resolve/WindowedResolver.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/JavaPeekCallFactory.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/JavaPeekCallFactory.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/JavaPeekCallFactory.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/JavaPeekCallFactory.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinArrayVariable.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinArrayVariable.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinArrayVariable.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinArrayVariable.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinAssignmentStatement.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinAssignmentStatement.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinAssignmentStatement.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinAssignmentStatement.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinCodeBlock.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinCodeBlock.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinCodeBlock.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinCodeBlock.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinCollectionsPeekCallFactory.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinCollectionsPeekCallFactory.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinCollectionsPeekCallFactory.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinCollectionsPeekCallFactory.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinForEachLoop.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinForEachLoop.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinForEachLoop.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinForEachLoop.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinForLoop.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinForLoop.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinForLoop.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinForLoop.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinForLoopBody.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinForLoopBody.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinForLoopBody.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinForLoopBody.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinIfBranch.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinIfBranch.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinIfBranch.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinIfBranch.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinLambda.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinLambda.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinLambda.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinLambda.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinLambdaBody.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinLambdaBody.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinLambdaBody.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinLambdaBody.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinListVariable.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinListVariable.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinListVariable.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinListVariable.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinMapVariable.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinMapVariable.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinMapVariable.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinMapVariable.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinSequenceTypes.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinSequenceTypes.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinSequenceTypes.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinSequenceTypes.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinStatementFactory.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinStatementFactory.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinStatementFactory.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinStatementFactory.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinTryBlock.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinTryBlock.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinTryBlock.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinTryBlock.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinVariableDeclaration.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinVariableDeclaration.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinVariableDeclaration.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/KotlinVariableDeclaration.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/PeekCallFactory.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/PeekCallFactory.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/PeekCallFactory.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/dsl/PeekCallFactory.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/KotlinTraceExpressionBuilder.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/KotlinTraceExpressionBuilder.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/KotlinTraceExpressionBuilder.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/KotlinTraceExpressionBuilder.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/CallUtils.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/CallUtils.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/CallUtils.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/CallUtils.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/OnEachCall.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/OnEachCall.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/OnEachCall.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/OnEachCall.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/BothSemanticHandlerWrapper.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/BothSemanticHandlerWrapper.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/BothSemanticHandlerWrapper.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/BothSemanticHandlerWrapper.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/BothSemanticsHandler.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/BothSemanticsHandler.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/BothSemanticsHandler.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/BothSemanticsHandler.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/CollectionHandlerBase.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/CollectionHandlerBase.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/CollectionHandlerBase.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/CollectionHandlerBase.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/CollectionIntermediateHandler.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/CollectionIntermediateHandler.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/CollectionIntermediateHandler.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/CollectionIntermediateHandler.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/CollectionTerminatorHandler.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/CollectionTerminatorHandler.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/CollectionTerminatorHandler.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/CollectionTerminatorHandler.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/FilterCallHandler.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/FilterCallHandler.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/FilterCallHandler.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/collections/FilterCallHandler.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/sequence/FilterIsInstanceHandler.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/sequence/FilterIsInstanceHandler.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/sequence/FilterIsInstanceHandler.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/sequence/FilterIsInstanceHandler.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/sequence/KotlinDistinctByHandler.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/sequence/KotlinDistinctByHandler.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/sequence/KotlinDistinctByHandler.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/handler/sequence/KotlinDistinctByHandler.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/interpret/FilterTraceInterpreter.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/interpret/FilterTraceInterpreter.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/interpret/FilterTraceInterpreter.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/interpret/FilterTraceInterpreter.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/interpret/InterpreterUtil.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/interpret/InterpreterUtil.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/interpret/InterpreterUtil.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/interpret/InterpreterUtil.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/interpret/ValuesOrder.kt b/idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/interpret/ValuesOrder.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/interpret/ValuesOrder.kt rename to idea/jvm-debugger/jvm-debugger-sequence/src/org/jetbrains/kotlin/idea/debugger/sequence/trace/impl/interpret/ValuesOrder.kt diff --git a/idea/jvm-debugger/jvm-debugger-util/build.gradle.kts b/idea/jvm-debugger/jvm-debugger-util/build.gradle.kts new file mode 100644 index 00000000000..7c793842109 --- /dev/null +++ b/idea/jvm-debugger/jvm-debugger-util/build.gradle.kts @@ -0,0 +1,22 @@ +plugins { + kotlin("jvm") + id("jps-compatible") +} + +dependencies { + compile(project(":compiler:backend")) + compile(project(":idea:idea-core")) + testCompile(project(":kotlin-test:kotlin-test-junit")) + + // TODO: get rid of this + compile(project(":idea:jvm-debugger:eval4j")) + + compile(files("${System.getProperty("java.home")}/../lib/tools.jar")) + + testCompile(commonDep("junit:junit")) +} + +sourceSets { + "main" { projectDefault() } + "test" { none() } +} \ No newline at end of file diff --git a/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/CodeFragmentContextUtils.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/CodeFragmentContextUtils.kt new file mode 100644 index 00000000000..5d1084f45fc --- /dev/null +++ b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/CodeFragmentContextUtils.kt @@ -0,0 +1,50 @@ +/* + * Copyright 2000-2019 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.debugger + +import com.intellij.psi.* +import com.intellij.psi.util.PsiTreeUtil +import org.jetbrains.kotlin.asJava.classes.KtLightClass +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils +import org.jetbrains.kotlin.psi.KtElement +import org.jetbrains.kotlin.psi.KtExpression +import org.jetbrains.kotlin.psi.KtFile + +fun getContextElement(elementAt: PsiElement?): PsiElement? { + if (elementAt == null) return null + + if (elementAt is PsiCodeBlock) { + return getContextElement(elementAt.context?.context) + } + + if (elementAt is KtLightClass) { + return getContextElement(elementAt.kotlinOrigin) + } + + val containingFile = elementAt.containingFile + if (containingFile is PsiJavaFile) return elementAt + if (containingFile !is KtFile) return null + + // elementAt can be PsiWhiteSpace when codeFragment is created from line start offset (in case of first opening EE window) + val lineStartOffset = if (elementAt is PsiWhiteSpace || elementAt is PsiComment) { + PsiTreeUtil.skipSiblingsForward(elementAt, PsiWhiteSpace::class.java, PsiComment::class.java)?.textOffset + ?: elementAt.textOffset + } else { + elementAt.textOffset + } + + fun KtElement.takeIfAcceptedAsCodeFragmentContext() = takeIf { KotlinEditorTextProvider.isAcceptedAsCodeFragmentContext(it) } + + PsiTreeUtil.findElementOfClassAtOffset(containingFile, lineStartOffset, KtExpression::class.java, false) + ?.takeIfAcceptedAsCodeFragmentContext() + ?.let { return CodeInsightUtils.getTopmostElementAtOffset(it, lineStartOffset, KtExpression::class.java) } + + KotlinEditorTextProvider.findExpressionInner(elementAt, true) + ?.takeIfAcceptedAsCodeFragmentContext() + ?.let { return it } + + return containingFile +} \ No newline at end of file diff --git a/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/CoroutineUtils.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/CoroutineUtils.kt new file mode 100644 index 00000000000..70913d6dcd0 --- /dev/null +++ b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/CoroutineUtils.kt @@ -0,0 +1,16 @@ +/* + * Copyright 2000-2019 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.debugger + +import kotlin.coroutines.Continuation +import org.jetbrains.org.objectweb.asm.Type as AsmType + +val CONTINUATION_TYPE: AsmType = AsmType.getType(Continuation::class.java) + +val SUSPEND_LAMBDA_CLASSES: List = listOf( + "kotlin.coroutines.jvm.internal.SuspendLambda", + "kotlin.coroutines.jvm.internal.RestrictedSuspendLambda" +) \ No newline at end of file diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/DebuggerUtils.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/DebuggerUtils.kt similarity index 99% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/DebuggerUtils.kt rename to idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/DebuggerUtils.kt index 9d45158ce75..9aa0720d6cd 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/DebuggerUtils.kt +++ b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/DebuggerUtils.kt @@ -25,7 +25,7 @@ import org.jetbrains.annotations.TestOnly import org.jetbrains.kotlin.asJava.finder.JavaElementFinder import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.PropertyDescriptor -import org.jetbrains.kotlin.idea.KotlinFileTypeFactory +import org.jetbrains.kotlin.idea.core.KotlinFileTypeFactory import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.resolve.ResolutionFacade diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/FileRankingCalculator.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/FileRankingCalculator.kt similarity index 99% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/FileRankingCalculator.kt rename to idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/FileRankingCalculator.kt index ffb4b068afd..b5846d9e269 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/FileRankingCalculator.kt +++ b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/FileRankingCalculator.kt @@ -14,12 +14,12 @@ import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.diagnostics.DiagnosticUtils import org.jetbrains.kotlin.idea.caches.resolve.analyze +import org.jetbrains.kotlin.idea.core.util.getLineStartOffset import org.jetbrains.kotlin.idea.debugger.FileRankingCalculator.Ranking.Companion.LOW import org.jetbrains.kotlin.idea.debugger.FileRankingCalculator.Ranking.Companion.MAJOR import org.jetbrains.kotlin.idea.debugger.FileRankingCalculator.Ranking.Companion.MINOR import org.jetbrains.kotlin.idea.debugger.FileRankingCalculator.Ranking.Companion.NORMAL import org.jetbrains.kotlin.idea.debugger.FileRankingCalculator.Ranking.Companion.ZERO -import org.jetbrains.kotlin.idea.refactoring.getLineStartOffset import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getParentOfType import org.jetbrains.kotlin.psi.psiUtil.getParentOfTypes2 diff --git a/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/InlineUtils.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/InlineUtils.kt new file mode 100644 index 00000000000..02de0482a3d --- /dev/null +++ b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/InlineUtils.kt @@ -0,0 +1,52 @@ +/* + * Copyright 2000-2019 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.debugger + +import com.intellij.debugger.jdi.LocalVariableProxyImpl +import org.jetbrains.kotlin.codegen.AsmUtil +import org.jetbrains.kotlin.codegen.inline.INLINE_FUN_VAR_SUFFIX +import org.jetbrains.kotlin.load.java.JvmAbi.LOCAL_VARIABLE_NAME_PREFIX_INLINE_ARGUMENT +import org.jetbrains.kotlin.load.java.JvmAbi.LOCAL_VARIABLE_NAME_PREFIX_INLINE_FUNCTION + +val INLINED_THIS_REGEX = getLocalVariableNameRegexInlineAware(AsmUtil.INLINE_DECLARATION_SITE_THIS) + +fun getInlineDepth(variables: List): Int { + val inlineFunVariables = variables + .filter { it.name().startsWith(LOCAL_VARIABLE_NAME_PREFIX_INLINE_FUNCTION) } + + if (inlineFunVariables.isEmpty()) { + return 0 + } + + val closestInlineFun = inlineFunVariables.maxBy { it.variable }!!.variable + val inlineLambdaDepth = variables + .count { it.name().startsWith(LOCAL_VARIABLE_NAME_PREFIX_INLINE_ARGUMENT) && it.variable > closestInlineFun } + + return maxOf(0, inlineFunVariables.size - inlineLambdaDepth) +} + +fun getInlineDepth(variableName: String): Int { + var endIndex = variableName.length + var depth = 0 + + val suffixLen = INLINE_FUN_VAR_SUFFIX.length + while (endIndex >= suffixLen) { + if (variableName.substring(endIndex - suffixLen, endIndex) != INLINE_FUN_VAR_SUFFIX) { + break + } + + depth++ + endIndex -= suffixLen + } + + return depth +} + +private fun getLocalVariableNameRegexInlineAware(name: String): Regex { + val escapedName = Regex.escape(name) + val escapedSuffix = Regex.escape(INLINE_FUN_VAR_SUFFIX) + return Regex("^$escapedName(?:$escapedSuffix)*$") +} \ No newline at end of file diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinEditorTextProvider.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/KotlinEditorTextProvider.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinEditorTextProvider.kt rename to idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/KotlinEditorTextProvider.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/NoStrataPositionManagerHelper.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/NoStrataPositionManagerHelper.kt similarity index 96% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/NoStrataPositionManagerHelper.kt rename to idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/NoStrataPositionManagerHelper.kt index 0a57f322718..7c3bf7f11ad 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/NoStrataPositionManagerHelper.kt +++ b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/NoStrataPositionManagerHelper.kt @@ -32,15 +32,12 @@ import com.sun.jdi.ReferenceType import com.sun.jdi.VirtualMachine import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches -import org.jetbrains.kotlin.idea.refactoring.getLineCount -import org.jetbrains.kotlin.idea.refactoring.getLineStartOffset -import org.jetbrains.kotlin.idea.refactoring.toPsiFile +import org.jetbrains.kotlin.idea.core.util.getLineCount +import org.jetbrains.kotlin.idea.core.util.getLineStartOffset +import org.jetbrains.kotlin.idea.core.util.toPsiFile import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.idea.util.application.runReadAction -import org.jetbrains.kotlin.idea.vfilefinder.IDEVirtualFileFinder -import org.jetbrains.kotlin.idea.vfilefinder.IDEVirtualFileFinderFactory import org.jetbrains.kotlin.lexer.KtTokens -import org.jetbrains.kotlin.load.kotlin.VirtualFileFinder import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName @@ -258,7 +255,7 @@ private fun findAndReadClassFile( return readBytecodeInfo(project, jvmClassName, virtualFile) } -internal fun getLocationsOfInlinedLine(type: ReferenceType, position: SourcePosition, sourceSearchScope: GlobalSearchScope): List { +fun getLocationsOfInlinedLine(type: ReferenceType, position: SourcePosition, sourceSearchScope: GlobalSearchScope): List { val line = position.line val file = position.file val project = position.file.project diff --git a/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/TypeUtils.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/TypeUtils.kt new file mode 100644 index 00000000000..c95868ea118 --- /dev/null +++ b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/TypeUtils.kt @@ -0,0 +1,74 @@ +/* + * Copyright 2000-2019 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.debugger + +import com.intellij.psi.JavaPsiFacade +import com.intellij.psi.search.GlobalSearchScope +import com.sun.jdi.ClassType +import org.jetbrains.kotlin.builtins.DefaultBuiltIns +import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap +import org.jetbrains.kotlin.codegen.AsmUtil +import org.jetbrains.kotlin.descriptors.ClassDescriptor +import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.descriptors.findClassAcrossModuleDependencies +import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaClassDescriptor +import org.jetbrains.kotlin.idea.util.application.runReadAction +import org.jetbrains.kotlin.resolve.jvm.JvmClassName +import com.sun.jdi.Type as JdiType +import org.jetbrains.org.objectweb.asm.Type as AsmType + +fun JdiType.isSubtype(className: String): Boolean = isSubtype(AsmType.getObjectType(className)) + +fun JdiType.isSubtype(type: AsmType): Boolean { + if (this.signature() == type.descriptor) { + return true + } + + if (type.sort != AsmType.OBJECT || this !is ClassType) { + return false + } + + val superTypeName = type.className + + if (allInterfaces().any { it.name() == superTypeName }) { + return true + } + + var superClass = superclass() + while (superClass != null) { + if (superClass.name() == superTypeName) { + return true + } + superClass = superClass.superclass() + } + + return false +} + +fun AsmType.getClassDescriptor( + scope: GlobalSearchScope, + mapBuiltIns: Boolean = true, + moduleDescriptor: ModuleDescriptor = DefaultBuiltIns.Instance.builtInsModule +): ClassDescriptor? { + if (AsmUtil.isPrimitive(this)) return null + + val jvmName = JvmClassName.byInternalName(internalName).fqNameForClassNameWithoutDollars + + if (mapBuiltIns) { + val mappedName = JavaToKotlinClassMap.mapJavaToKotlin(jvmName) + if (mappedName != null) { + moduleDescriptor.findClassAcrossModuleDependencies(mappedName)?.let { return it } + } + } + + return runReadAction { + val classes = JavaPsiFacade.getInstance(scope.project).findClasses(jvmName.asString(), scope) + if (classes.isEmpty()) null + else { + classes.first().getJavaClassDescriptor() + } + } +} \ No newline at end of file diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/ExecutionContext.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/ExecutionContext.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/ExecutionContext.kt rename to idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/ExecutionContext.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinDebuggerCaches.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinDebuggerCaches.kt similarity index 99% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinDebuggerCaches.kt rename to idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinDebuggerCaches.kt index ebb756001f0..28a35819134 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinDebuggerCaches.kt +++ b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinDebuggerCaches.kt @@ -38,11 +38,11 @@ import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.idea.caches.resolve.analyzeAndGetResult import org.jetbrains.kotlin.idea.caches.resolve.analyzeWithAllCompilerChecks +import org.jetbrains.kotlin.idea.core.util.runInReadActionWithWriteActionPriorityWithPCE import org.jetbrains.kotlin.idea.debugger.BinaryCacheKey import org.jetbrains.kotlin.idea.debugger.BytecodeDebugInfo import org.jetbrains.kotlin.idea.debugger.createWeakBytecodeDebugInfoStorage import org.jetbrains.kotlin.idea.debugger.evaluate.compilation.CompiledDataDescriptor -import org.jetbrains.kotlin.idea.runInReadActionWithWriteActionPriorityWithPCE import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.psi.KtCodeFragment import org.jetbrains.kotlin.psi.KtElement diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/ClassToLoad.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/ClassToLoad.kt similarity index 87% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/ClassToLoad.kt rename to idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/ClassToLoad.kt index e1ffd5e844e..97ce1a2d49a 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/ClassToLoad.kt +++ b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/classLoading/ClassToLoad.kt @@ -16,7 +16,8 @@ package org.jetbrains.kotlin.idea.debugger.evaluate.classLoading -import org.jetbrains.kotlin.idea.debugger.evaluate.GENERATED_CLASS_NAME +const val GENERATED_FUNCTION_NAME = "generated_for_debugger_fun" +const val GENERATED_CLASS_NAME = "Generated_for_debugger_class" @Suppress("ArrayInDataClass") data class ClassToLoad(val className: String, val relativeFileName: String, val bytes: ByteArray) { diff --git a/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentParameter.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentParameter.kt new file mode 100644 index 00000000000..db79682ce2b --- /dev/null +++ b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentParameter.kt @@ -0,0 +1,33 @@ +/* + * Copyright 2000-2019 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.debugger.evaluate.compilation + +import org.jetbrains.kotlin.codegen.CodeFragmentCodegenInfo +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.types.KotlinType + +interface CodeFragmentParameter { + val kind: Kind + val name: String + val debugString: String + + enum class Kind { + ORDINARY, DELEGATED, EXTENSION_RECEIVER, DISPATCH_RECEIVER, COROUTINE_CONTEXT, LOCAL_FUNCTION, + FAKE_JAVA_OUTER_CLASS, FIELD_VAR, DEBUG_LABEL + } + + class Smart( + val dumb: Dumb, + override val targetType: KotlinType, + override val targetDescriptor: DeclarationDescriptor + ) : CodeFragmentParameter by dumb, CodeFragmentCodegenInfo.IParameter + + data class Dumb( + override val kind: Kind, + override val name: String, + override val debugString: String = name + ) : CodeFragmentParameter +} \ No newline at end of file diff --git a/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CompiledDataDescriptor.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CompiledDataDescriptor.kt new file mode 100644 index 00000000000..6efa9880cc3 --- /dev/null +++ b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CompiledDataDescriptor.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2000-2019 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.debugger.evaluate.compilation + +import com.intellij.debugger.SourcePosition +import org.jetbrains.kotlin.idea.debugger.evaluate.classLoading.ClassToLoad +import org.jetbrains.org.objectweb.asm.Type + +data class CompiledDataDescriptor( + val classes: List, + val parameters: List, + val crossingBounds: Set, + val mainMethodSignature: MethodSignature, + val sourcePosition: SourcePosition? +) { + data class MethodSignature(val parameterTypes: List, val returnType: Type) +} + +val CompiledDataDescriptor.mainClass: ClassToLoad + get() = classes.first { it.isMainClass } \ No newline at end of file diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/safeUtil.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/safeUtil.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/safeUtil.kt rename to idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/safeUtil.kt diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/smapUtil.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/smapUtil.kt similarity index 100% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/smapUtil.kt rename to idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/smapUtil.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectInspectionTest.kt b/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectInspectionTest.kt index 68c6f441dd4..dc289e21bc3 100644 --- a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectInspectionTest.kt +++ b/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectInspectionTest.kt @@ -14,7 +14,7 @@ import com.intellij.codeInspection.ex.Tools import com.intellij.openapi.vfs.VirtualFile import com.intellij.profile.codeInspection.ProjectInspectionProfileManager import com.intellij.psi.PsiFile -import org.jetbrains.kotlin.idea.refactoring.toPsiFile +import org.jetbrains.kotlin.idea.core.util.toPsiFile import kotlin.system.measureNanoTime abstract class WholeProjectInspectionTest : WholeProjectPerformanceTest() { diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectLightClassTest.kt b/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectLightClassTest.kt index 2cd27b0e2ee..9859e254538 100644 --- a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectLightClassTest.kt +++ b/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectLightClassTest.kt @@ -10,7 +10,7 @@ import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.cfg.pseudocode.containingDeclarationForPseudocode -import org.jetbrains.kotlin.idea.refactoring.toPsiFile +import org.jetbrains.kotlin.idea.core.util.toPsiFile import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtVisitorVoid import java.util.* diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectUltraLightClassTest.kt b/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectUltraLightClassTest.kt index 4c30f1c197f..a031c398e36 100644 --- a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectUltraLightClassTest.kt +++ b/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectUltraLightClassTest.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.idea.perf import com.intellij.openapi.vfs.VirtualFile -import org.jetbrains.kotlin.idea.refactoring.toPsiFile +import org.jetbrains.kotlin.idea.core.util.toPsiFile import org.jetbrains.kotlin.psi.KtFile import kotlin.system.measureNanoTime diff --git a/idea/resources/META-INF/jvm.xml b/idea/resources/META-INF/jvm.xml index 8f532c82e81..de969a1af20 100644 --- a/idea/resources/META-INF/jvm.xml +++ b/idea/resources/META-INF/jvm.xml @@ -135,7 +135,7 @@ + implementationClass="org.jetbrains.kotlin.idea.debugger.evaluate.surroundWith.KotlinDebuggerExpressionSurroundDescriptor"/> @@ -157,6 +157,10 @@ serviceInterface="org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider" serviceImplementation="org.jetbrains.kotlin.platform.impl.IdeaDefaultIdeTargetPlatformKindProvider"/> + + + implementationClass="org.jetbrains.kotlin.idea.debugger.evaluate.surroundWith.KotlinDebuggerExpressionSurroundDescriptor"/> @@ -156,6 +156,10 @@ serviceInterface="org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider" serviceImplementation="org.jetbrains.kotlin.platform.impl.IdeaDefaultIdeTargetPlatformKindProvider"/> + + + implementationClass="org.jetbrains.kotlin.idea.debugger.evaluate.surroundWith.KotlinDebuggerExpressionSurroundDescriptor"/> @@ -157,6 +157,10 @@ serviceInterface="org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider" serviceImplementation="org.jetbrains.kotlin.platform.impl.IdeaDefaultIdeTargetPlatformKindProvider"/> + + - + diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/JavaToKotlinAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/JavaToKotlinAction.kt index 3adb8eb7d62..8a33c3d5a95 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/JavaToKotlinAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/JavaToKotlinAction.kt @@ -44,9 +44,9 @@ import com.intellij.psi.PsiJavaFile import com.intellij.psi.PsiManager import com.intellij.psi.util.PsiTreeUtil import org.jetbrains.kotlin.idea.KotlinFileType +import org.jetbrains.kotlin.idea.core.util.toPsiFile import org.jetbrains.kotlin.idea.j2k.IdeaJavaToKotlinServices import org.jetbrains.kotlin.idea.j2k.JavaToKotlinConverterFactory -import org.jetbrains.kotlin.idea.refactoring.toPsiFile import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.isRunningInCidrIde diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateTestSupportActionBase.kt b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateTestSupportActionBase.kt index 4e496e83e4b..ff8df4d114e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateTestSupportActionBase.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateTestSupportActionBase.kt @@ -45,8 +45,8 @@ import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor import org.jetbrains.kotlin.idea.core.insertMember import org.jetbrains.kotlin.idea.core.overrideImplement.OverrideMemberChooserObject.BodyType import org.jetbrains.kotlin.idea.core.overrideImplement.generateUnsupportedOrSuperCall +import org.jetbrains.kotlin.idea.j2k.j2k import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.setupEditorSelection -import org.jetbrains.kotlin.idea.refactoring.j2k import org.jetbrains.kotlin.idea.testIntegration.findSuitableFrameworks import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.lexer.KtTokens diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/AbstractCompletionBenchmarkAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/AbstractCompletionBenchmarkAction.kt index cd34b2c5dcf..3c1f34f18cb 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/AbstractCompletionBenchmarkAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/AbstractCompletionBenchmarkAction.kt @@ -43,8 +43,8 @@ import org.jetbrains.kotlin.idea.caches.project.getNullableModuleInfo import org.jetbrains.kotlin.idea.completion.CompletionBenchmarkSink import org.jetbrains.kotlin.idea.core.moveCaret import org.jetbrains.kotlin.idea.core.util.EDT -import org.jetbrains.kotlin.idea.refactoring.getLineCount -import org.jetbrains.kotlin.idea.refactoring.toPsiFile +import org.jetbrains.kotlin.idea.core.util.getLineCount +import org.jetbrains.kotlin.idea.core.util.toPsiFile import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.psi.KtFile import java.util.* diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/HighlightingBenchmarkAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/HighlightingBenchmarkAction.kt index 45eb7ff6c77..71a4acdc522 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/HighlightingBenchmarkAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/HighlightingBenchmarkAction.kt @@ -40,7 +40,7 @@ import org.jetbrains.kotlin.idea.actions.internal.benchmark.AbstractCompletionBe import org.jetbrains.kotlin.idea.actions.internal.benchmark.AbstractCompletionBenchmarkAction.Companion.collectSuitableKotlinFiles import org.jetbrains.kotlin.idea.actions.internal.benchmark.AbstractCompletionBenchmarkAction.Companion.shuffledSequence import org.jetbrains.kotlin.idea.core.util.EDT -import org.jetbrains.kotlin.idea.refactoring.getLineCount +import org.jetbrains.kotlin.idea.core.util.getLineCount import org.jetbrains.kotlin.psi.KtFile import java.util.* import javax.swing.JFileChooser diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/LocalCompletionBenchmark.kt b/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/LocalCompletionBenchmark.kt index a9f6d0b32d2..9460cccbcb2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/LocalCompletionBenchmark.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/LocalCompletionBenchmark.kt @@ -23,7 +23,7 @@ import com.intellij.ui.components.JBTextField import com.intellij.uiDesigner.core.GridLayoutManager import org.jetbrains.kotlin.idea.actions.internal.benchmark.AbstractCompletionBenchmarkAction.Companion.randomElement import org.jetbrains.kotlin.idea.completion.CompletionBenchmarkSink -import org.jetbrains.kotlin.idea.refactoring.getLineCount +import org.jetbrains.kotlin.idea.core.util.getLineCount import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFunction import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/TopLevelCompletionBenchmark.kt b/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/TopLevelCompletionBenchmark.kt index 5c4f0b97ef0..1e08aebb141 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/TopLevelCompletionBenchmark.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/TopLevelCompletionBenchmark.kt @@ -24,7 +24,7 @@ import com.intellij.ui.components.JBTextField import com.intellij.uiDesigner.core.GridLayoutManager import org.jetbrains.kotlin.idea.actions.internal.benchmark.AbstractCompletionBenchmarkAction.Companion.randomElement import org.jetbrains.kotlin.idea.completion.CompletionBenchmarkSink -import org.jetbrains.kotlin.idea.refactoring.getLineCount +import org.jetbrains.kotlin.idea.core.util.getLineCount import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteReferenceProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteReferenceProcessor.kt index 1c554d3fbf9..50956531362 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteReferenceProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteReferenceProcessor.kt @@ -36,9 +36,9 @@ import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference import org.jetbrains.kotlin.idea.codeInsight.shorten.performDelayedRefactoringRequests -import org.jetbrains.kotlin.idea.conversion.copy.end -import org.jetbrains.kotlin.idea.conversion.copy.range -import org.jetbrains.kotlin.idea.conversion.copy.start +import org.jetbrains.kotlin.idea.core.util.end +import org.jetbrains.kotlin.idea.core.util.range +import org.jetbrains.kotlin.idea.core.util.start import org.jetbrains.kotlin.idea.imports.importableFqName import org.jetbrains.kotlin.idea.kdoc.KDocReference import org.jetbrains.kotlin.idea.references.* diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/MoveDeclarationsOutHelper.kt b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/MoveDeclarationsOutHelper.kt index 2c1a6f7976c..d624b4f1fe6 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/MoveDeclarationsOutHelper.kt +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/MoveDeclarationsOutHelper.kt @@ -23,7 +23,7 @@ import com.intellij.psi.search.SearchScope import com.intellij.psi.search.searches.ReferencesSearch import com.intellij.psi.util.PsiUtilCore import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.core.ShortenReferences import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.psi.* diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinControlFlowExpressionSurrounderBase.kt b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinControlFlowExpressionSurrounderBase.kt index dbff3d40986..da0cfdb9402 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinControlFlowExpressionSurrounderBase.kt +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinControlFlowExpressionSurrounderBase.kt @@ -21,6 +21,7 @@ import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project import com.intellij.openapi.util.TextRange import org.jetbrains.kotlin.idea.core.replaced +import org.jetbrains.kotlin.idea.core.surroundWith.KotlinExpressionSurrounder import org.jetbrains.kotlin.psi.KtExpression import org.jetbrains.kotlin.psi.KtPsiFactory import org.jetbrains.kotlin.psi.createExpressionByPattern diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinExpressionSurroundDescriptor.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinExpressionSurroundDescriptor.java index e468bbf572c..4e973cd22c3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinExpressionSurroundDescriptor.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinExpressionSurroundDescriptor.java @@ -16,15 +16,11 @@ package org.jetbrains.kotlin.idea.codeInsight.surroundWith.expression; -import com.intellij.lang.surroundWith.SurroundDescriptor; import com.intellij.lang.surroundWith.Surrounder; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils; -import org.jetbrains.kotlin.psi.KtExpression; +import org.jetbrains.kotlin.idea.core.surroundWith.KotlinExpressionSurroundDescriptorBase; -public class KotlinExpressionSurroundDescriptor implements SurroundDescriptor { +public class KotlinExpressionSurroundDescriptor extends KotlinExpressionSurroundDescriptorBase { private static final Surrounder[] SURROUNDERS = { new KotlinNotSurrounder(), new KotlinStringTemplateSurrounder(), @@ -38,15 +34,6 @@ public class KotlinExpressionSurroundDescriptor implements SurroundDescriptor { new KotlinIfElseExpressionSurrounder(/* withBraces = */true) }; - @Override - @NotNull - public PsiElement[] getElementsToSurround(PsiFile file, int startOffset, int endOffset) { - KtExpression expression = (KtExpression) CodeInsightUtils.findElement( - file, startOffset, endOffset, CodeInsightUtils.ElementKind.EXPRESSION); - - return expression == null ? PsiElement.EMPTY_ARRAY : new PsiElement[] {expression}; - } - @Override @NotNull public Surrounder[] getSurrounders() { diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinNotSurrounder.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinNotSurrounder.java index 00647663809..bb6d343117b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinNotSurrounder.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinNotSurrounder.java @@ -25,6 +25,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.builtins.KotlinBuiltIns; import org.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils; +import org.jetbrains.kotlin.idea.core.surroundWith.KotlinExpressionSurrounder; import org.jetbrains.kotlin.psi.KtExpression; import org.jetbrains.kotlin.psi.KtParenthesizedExpression; import org.jetbrains.kotlin.psi.KtPrefixExpression; diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinParenthesesSurrounder.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinParenthesesSurrounder.java index 7a007632cb2..b9fd6289655 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinParenthesesSurrounder.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinParenthesesSurrounder.java @@ -23,6 +23,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.kotlin.idea.core.surroundWith.KotlinExpressionSurrounder; import org.jetbrains.kotlin.psi.KtExpression; import org.jetbrains.kotlin.psi.KtParenthesizedExpression; import org.jetbrains.kotlin.psi.KtPsiFactoryKt; diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinStringTemplateSurrounder.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinStringTemplateSurrounder.java index 43b907cff22..b1b380aa57f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinStringTemplateSurrounder.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinStringTemplateSurrounder.java @@ -23,6 +23,7 @@ import com.intellij.openapi.util.TextRange; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.idea.KotlinBundle; +import org.jetbrains.kotlin.idea.core.surroundWith.KotlinExpressionSurrounder; import org.jetbrains.kotlin.psi.*; public class KotlinStringTemplateSurrounder extends KotlinExpressionSurrounder { diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinWhenSurrounder.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinWhenSurrounder.java index 8af741c2c24..a2432a0dcc1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinWhenSurrounder.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinWhenSurrounder.java @@ -27,6 +27,7 @@ import org.jetbrains.kotlin.descriptors.ClassKind; import org.jetbrains.kotlin.descriptors.ClassifierDescriptor; import org.jetbrains.kotlin.idea.KotlinBundle; import org.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils; +import org.jetbrains.kotlin.idea.core.surroundWith.KotlinExpressionSurrounder; import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import org.jetbrains.kotlin.types.KotlinType; diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinWithIfExpressionSurrounder.kt b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinWithIfExpressionSurrounder.kt index 9d9541859d0..8c13e7f6721 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinWithIfExpressionSurrounder.kt +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/expression/KotlinWithIfExpressionSurrounder.kt @@ -21,7 +21,8 @@ import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project import com.intellij.openapi.util.TextRange import org.jetbrains.kotlin.idea.caches.resolve.analyze -import org.jetbrains.kotlin.idea.conversion.copy.range +import org.jetbrains.kotlin.idea.core.util.range +import org.jetbrains.kotlin.idea.core.surroundWith.KotlinExpressionSurrounder import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.types.typeUtil.isBoolean diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinFunctionLiteralSurrounder.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinFunctionLiteralSurrounder.java index f42d4218b9b..6a35cbc9fd9 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinFunctionLiteralSurrounder.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinFunctionLiteralSurrounder.java @@ -23,8 +23,8 @@ import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.idea.KotlinBundle; -import org.jetbrains.kotlin.idea.codeInsight.surroundWith.KotlinSurrounderUtils; import org.jetbrains.kotlin.idea.codeInsight.surroundWith.MoveDeclarationsOutHelperKt; +import org.jetbrains.kotlin.idea.core.surroundWith.KotlinSurrounderUtils; import org.jetbrains.kotlin.psi.*; public class KotlinFunctionLiteralSurrounder extends KotlinStatementsSurrounder { diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinIfSurrounderBase.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinIfSurrounderBase.java index 95036a06d85..08cafee6989 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinIfSurrounderBase.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinIfSurrounderBase.java @@ -24,8 +24,8 @@ import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.idea.codeInsight.surroundWith.KotlinSurrounderUtils; import org.jetbrains.kotlin.idea.codeInsight.surroundWith.MoveDeclarationsOutHelperKt; +import org.jetbrains.kotlin.idea.core.surroundWith.KotlinSurrounderUtils; import org.jetbrains.kotlin.psi.KtBlockExpression; import org.jetbrains.kotlin.psi.KtExpression; import org.jetbrains.kotlin.psi.KtIfExpression; diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinStatementSurroundDescriptor.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinStatementSurroundDescriptor.java index 4683c2639e1..93bbf8fa04b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinStatementSurroundDescriptor.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinStatementSurroundDescriptor.java @@ -21,7 +21,7 @@ import com.intellij.lang.surroundWith.Surrounder; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils; +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils; public class KotlinStatementSurroundDescriptor implements SurroundDescriptor { diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinStatementsSurrounder.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinStatementsSurrounder.java index 943aa487326..78bda33586d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinStatementsSurrounder.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinStatementsSurrounder.java @@ -24,7 +24,7 @@ import com.intellij.psi.PsiElement; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.idea.codeInsight.surroundWith.KotlinSurrounderUtils; +import org.jetbrains.kotlin.idea.core.surroundWith.KotlinSurrounderUtils; import org.jetbrains.kotlin.psi.KtExpression; public abstract class KotlinStatementsSurrounder implements Surrounder { diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinTrySurrounderBase.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinTrySurrounderBase.java index 160f39de9b6..42728ca250c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinTrySurrounderBase.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinTrySurrounderBase.java @@ -23,8 +23,8 @@ import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.idea.codeInsight.surroundWith.KotlinSurrounderUtils; import org.jetbrains.kotlin.idea.codeInsight.surroundWith.MoveDeclarationsOutHelperKt; +import org.jetbrains.kotlin.idea.core.surroundWith.KotlinSurrounderUtils; import org.jetbrains.kotlin.psi.*; public abstract class KotlinTrySurrounderBase extends KotlinStatementsSurrounder { diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/upDownMover/AbstractKotlinUpDownMover.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/upDownMover/AbstractKotlinUpDownMover.java index 1faa0405e76..020114648b5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/upDownMover/AbstractKotlinUpDownMover.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/upDownMover/AbstractKotlinUpDownMover.java @@ -28,6 +28,7 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.kotlin.idea.core.util.PsiLinesUtilsKt; import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringUtilKt; import org.jetbrains.kotlin.psi.KtBlockExpression; import org.jetbrains.kotlin.psi.KtFile; @@ -74,7 +75,7 @@ public abstract class AbstractKotlinUpDownMover extends LineMover { } if (comment != null) { - int extension = KotlinRefactoringUtilKt.getLineCount(comment); + int extension = PsiLinesUtilsKt.getLineCount(comment); if (extendDown) { bottomExtension = extension; } diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/upDownMover/KotlinExpressionMover.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/upDownMover/KotlinExpressionMover.java index 74a14015f62..bbad1bd9dae 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/upDownMover/KotlinExpressionMover.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/upDownMover/KotlinExpressionMover.java @@ -26,7 +26,7 @@ import com.intellij.psi.util.PsiTreeUtil; import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringUtilKt; +import org.jetbrains.kotlin.idea.core.util.PsiLinesUtilsKt; import org.jetbrains.kotlin.lexer.KtTokens; import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.psi.psiUtil.PsiUtilsKt; @@ -481,7 +481,7 @@ public class KotlinExpressionMover extends AbstractKotlinUpDownMover { } if (whiteSpaceTestSubject instanceof PsiWhiteSpace) { - if (KotlinRefactoringUtilKt.isMultiLine(whiteSpaceTestSubject)) { + if (PsiLinesUtilsKt.isMultiLine(whiteSpaceTestSubject)) { int nearLine = down ? sourceRange.endLine : sourceRange.startLine - 1; info.toMove = sourceRange; diff --git a/idea/src/org/jetbrains/kotlin/idea/conversion/copy/ConvertJavaCopyPasteProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/conversion/copy/ConvertJavaCopyPasteProcessor.kt index 1c3d2ba645b..251b8ceb19f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/conversion/copy/ConvertJavaCopyPasteProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/conversion/copy/ConvertJavaCopyPasteProcessor.kt @@ -33,6 +33,8 @@ import org.jetbrains.kotlin.idea.actions.JavaToKotlinAction import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference import org.jetbrains.kotlin.idea.codeInsight.KotlinCopyPasteReferenceProcessor import org.jetbrains.kotlin.idea.codeInsight.KotlinReferenceData +import org.jetbrains.kotlin.idea.core.util.start +import org.jetbrains.kotlin.idea.core.util.range import org.jetbrains.kotlin.idea.editor.KotlinEditorOptions import org.jetbrains.kotlin.idea.j2k.IdeaJavaToKotlinServices import org.jetbrains.kotlin.idea.j2k.JavaToKotlinConverterFactory diff --git a/idea/src/org/jetbrains/kotlin/idea/conversion/copy/DataForConversion.kt b/idea/src/org/jetbrains/kotlin/idea/conversion/copy/DataForConversion.kt index 3e5b5c59ab5..4aa3196c0ce 100644 --- a/idea/src/org/jetbrains/kotlin/idea/conversion/copy/DataForConversion.kt +++ b/idea/src/org/jetbrains/kotlin/idea/conversion/copy/DataForConversion.kt @@ -26,6 +26,9 @@ import org.jetbrains.kotlin.psi.psiUtil.allChildren import org.jetbrains.kotlin.psi.psiUtil.elementsInRange import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf import org.jetbrains.kotlin.psi.psiUtil.siblings +import org.jetbrains.kotlin.idea.core.util.start +import org.jetbrains.kotlin.idea.core.util.end +import org.jetbrains.kotlin.idea.core.util.range import java.util.* data class DataForConversion private constructor( diff --git a/idea/src/org/jetbrains/kotlin/idea/conversion/copy/RangeUtils.kt b/idea/src/org/jetbrains/kotlin/idea/conversion/copy/RangeUtils.kt deleted file mode 100644 index 68e017b6d90..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/conversion/copy/RangeUtils.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.idea.conversion.copy - -import com.intellij.openapi.editor.RangeMarker -import com.intellij.openapi.util.TextRange -import com.intellij.psi.PsiElement - -//NOTE: should be moved to some "util" place - -val TextRange.start: Int - get() = startOffset - -val TextRange.end: Int - get() = endOffset - -val PsiElement.range: TextRange - get() = textRange!! - -val RangeMarker.range: TextRange? - get() = if (isValid) { - val start = startOffset - val end = endOffset - if (start in 0..end) { - TextRange(start, end) - } else { - // Probably a race condition had happened and range marker is invalidated - null - } - } else null diff --git a/idea/src/org/jetbrains/kotlin/idea/editor/KotlinEnterHandler.kt b/idea/src/org/jetbrains/kotlin/idea/editor/KotlinEnterHandler.kt index e854d450814..a24c6ecf345 100644 --- a/idea/src/org/jetbrains/kotlin/idea/editor/KotlinEnterHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/editor/KotlinEnterHandler.kt @@ -19,7 +19,7 @@ import com.intellij.psi.PsiWhiteSpace import com.intellij.psi.codeStyle.CodeStyleManager import com.intellij.psi.tree.TokenSet import com.intellij.util.IncorrectOperationException -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.KtDotQualifiedExpression import org.jetbrains.kotlin.psi.KtFile diff --git a/idea/src/org/jetbrains/kotlin/idea/editor/KotlinMultilineStringEnterHandler.kt b/idea/src/org/jetbrains/kotlin/idea/editor/KotlinMultilineStringEnterHandler.kt index 1556c480f96..33239737e20 100644 --- a/idea/src/org/jetbrains/kotlin/idea/editor/KotlinMultilineStringEnterHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/editor/KotlinMultilineStringEnterHandler.kt @@ -33,9 +33,9 @@ import com.intellij.psi.PsiDocumentManager import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile import com.intellij.psi.impl.source.tree.LeafPsiElement +import org.jetbrains.kotlin.idea.core.util.toPsiFile import org.jetbrains.kotlin.idea.refactoring.hostEditor import org.jetbrains.kotlin.idea.refactoring.project -import org.jetbrains.kotlin.idea.refactoring.toPsiFile import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* diff --git a/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt b/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt index eead92f5a0e..4aae91aedc3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt +++ b/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt @@ -28,7 +28,7 @@ import org.jetbrains.kotlin.config.CompilerSettings import org.jetbrains.kotlin.config.createArguments import org.jetbrains.kotlin.config.splitArgumentString import org.jetbrains.kotlin.idea.compiler.configuration.* -import org.jetbrains.kotlin.idea.util.onTextChange +import org.jetbrains.kotlin.idea.core.util.onTextChange import org.jetbrains.kotlin.platform.IdePlatformKind import org.jetbrains.kotlin.platform.idePlatformKind import org.jetbrains.kotlin.platform.TargetPlatform diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinDefaultHighlightingSettingsProvider.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinDefaultHighlightingSettingsProvider.kt index 54cb6bf8344..5e782c1fae6 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinDefaultHighlightingSettingsProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinDefaultHighlightingSettingsProvider.kt @@ -9,8 +9,8 @@ import com.intellij.codeInsight.daemon.impl.analysis.DefaultHighlightingSettingP import com.intellij.codeInsight.daemon.impl.analysis.FileHighlightingSetting import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.VirtualFile +import org.jetbrains.kotlin.idea.core.util.toPsiFile import org.jetbrains.kotlin.idea.internal.isKotlinDecompiledFile -import org.jetbrains.kotlin.idea.refactoring.toPsiFile import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.psi.KtFile diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/AddJvmStaticIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/AddJvmStaticIntention.kt index 0c665a9f334..011e20efae5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/AddJvmStaticIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/AddJvmStaticIntention.kt @@ -25,7 +25,7 @@ import com.intellij.psi.search.searches.ReferencesSearch import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.elements.KtLightElement import org.jetbrains.kotlin.asJava.elements.KtLightField -import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress +import org.jetbrains.kotlin.idea.core.util.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.search.restrictByFileType import org.jetbrains.kotlin.idea.util.addAnnotation import org.jetbrains.kotlin.idea.util.application.runReadAction diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/AddNameToArgumentIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/AddNameToArgumentIntention.kt index 311d6f445e7..7aabad15c1b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/AddNameToArgumentIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/AddNameToArgumentIntention.kt @@ -24,8 +24,8 @@ import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall -import org.jetbrains.kotlin.idea.conversion.copy.end -import org.jetbrains.kotlin.idea.conversion.copy.start +import org.jetbrains.kotlin.idea.core.util.end +import org.jetbrains.kotlin.idea.core.util.start import org.jetbrains.kotlin.idea.project.languageVersionSettings import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/AddNamesToFollowingArgumentsIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/AddNamesToFollowingArgumentsIntention.kt index 2ee32b6a565..afe6817ad4b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/AddNamesToFollowingArgumentsIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/AddNamesToFollowingArgumentsIntention.kt @@ -8,8 +8,8 @@ package org.jetbrains.kotlin.idea.intentions import com.intellij.codeInsight.intention.LowPriorityAction import com.intellij.openapi.editor.Editor import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall -import org.jetbrains.kotlin.idea.conversion.copy.end -import org.jetbrains.kotlin.idea.conversion.copy.start +import org.jetbrains.kotlin.idea.core.util.start +import org.jetbrains.kotlin.idea.core.util.end import org.jetbrains.kotlin.psi.KtCallElement import org.jetbrains.kotlin.psi.KtLambdaExpression import org.jetbrains.kotlin.psi.KtValueArgument diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionTypeParameterToReceiverIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionTypeParameterToReceiverIntention.kt index fc6e1d4cdd1..fd1f39c2525 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionTypeParameterToReceiverIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionTypeParameterToReceiverIntention.kt @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor import org.jetbrains.kotlin.idea.core.* +import org.jetbrains.kotlin.idea.core.util.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.refactoring.CallableRefactoring import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.explicateReceiverOf import org.jetbrains.kotlin.idea.refactoring.checkConflictsInteractively @@ -38,7 +39,6 @@ import org.jetbrains.kotlin.idea.refactoring.getAffectedCallables import org.jetbrains.kotlin.idea.refactoring.introduce.introduceVariable.KotlinIntroduceVariableHandler import org.jetbrains.kotlin.idea.references.KtReference import org.jetbrains.kotlin.idea.references.KtSimpleReference -import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.search.usagesSearch.searchReferencesOrMethodReferences import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.runReadAction diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionTypeReceiverToParameterIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionTypeReceiverToParameterIntention.kt index f9b059be672..aef443b2561 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionTypeReceiverToParameterIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionTypeReceiverToParameterIntention.kt @@ -35,7 +35,7 @@ import org.jetbrains.kotlin.idea.refactoring.CallableRefactoring import org.jetbrains.kotlin.idea.refactoring.checkConflictsInteractively import org.jetbrains.kotlin.idea.refactoring.getAffectedCallables import org.jetbrains.kotlin.idea.references.KtSimpleReference -import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress +import org.jetbrains.kotlin.idea.core.util.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.search.usagesSearch.searchReferencesOrMethodReferences import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.runReadAction diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertPropertyToFunctionIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertPropertyToFunctionIntention.kt index d3f29941aa6..283b292d6ab 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertPropertyToFunctionIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertPropertyToFunctionIntention.kt @@ -32,7 +32,7 @@ import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.refactoring.* import org.jetbrains.kotlin.idea.references.KtReference import org.jetbrains.kotlin.idea.references.KtSimpleNameReference -import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress +import org.jetbrains.kotlin.idea.core.util.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.hasJvmFieldAnnotation diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertSealedClassToEnumIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertSealedClassToEnumIntention.kt index f6e1e2457df..cfb8b703c8f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertSealedClassToEnumIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertSealedClassToEnumIntention.kt @@ -26,7 +26,7 @@ import com.intellij.refactoring.util.CommonRefactoringUtil import com.intellij.refactoring.util.RefactoringDescriptionLocation import org.jetbrains.kotlin.asJava.unwrapped import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny -import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress +import org.jetbrains.kotlin.idea.core.util.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchRequest import org.jetbrains.kotlin.idea.search.declarationsSearch.searchInheritors import org.jetbrains.kotlin.idea.util.liftToExpected diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ImplementAbstractMemberIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ImplementAbstractMemberIntention.kt index 6bd5769ffdd..7147903c110 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ImplementAbstractMemberIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ImplementAbstractMemberIntention.kt @@ -43,7 +43,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaClassDescriptor import org.jetbrains.kotlin.idea.core.overrideImplement.OverrideImplementMembersHandler import org.jetbrains.kotlin.idea.core.overrideImplement.OverrideMemberChooserObject import org.jetbrains.kotlin.idea.refactoring.isAbstract -import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress +import org.jetbrains.kotlin.idea.core.util.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchRequest import org.jetbrains.kotlin.idea.search.declarationsSearch.searchInheritors import org.jetbrains.kotlin.idea.util.application.executeCommand diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ImportAllMembersIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ImportAllMembersIntention.kt index f51f604e65a..85d5845440f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ImportAllMembersIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ImportAllMembersIntention.kt @@ -20,7 +20,7 @@ import com.intellij.codeInsight.intention.HighPriorityAction import com.intellij.openapi.editor.Editor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.idea.caches.resolve.analyze -import org.jetbrains.kotlin.idea.conversion.copy.range +import org.jetbrains.kotlin.idea.core.util.range import org.jetbrains.kotlin.idea.core.ShortenReferences import org.jetbrains.kotlin.idea.imports.importableFqName import org.jetbrains.kotlin.idea.references.mainReference diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/MoveMemberOutOfCompanionObjectIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/MoveMemberOutOfCompanionObjectIntention.kt index 727b81eb52b..79a921e038d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/MoveMemberOutOfCompanionObjectIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/MoveMemberOutOfCompanionObjectIntention.kt @@ -29,7 +29,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.refactoring.getUsageContext import org.jetbrains.kotlin.idea.refactoring.isInterfaceClass -import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress +import org.jetbrains.kotlin.idea.core.util.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.hasJvmFieldAnnotation import org.jetbrains.kotlin.psi.* diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/MoveMemberToCompanionObjectIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/MoveMemberToCompanionObjectIntention.kt index 13dde3303c8..e5661ff21ee 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/MoveMemberToCompanionObjectIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/MoveMemberToCompanionObjectIntention.kt @@ -52,7 +52,7 @@ import org.jetbrains.kotlin.idea.refactoring.move.collectOuterInstanceReferences import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.* import org.jetbrains.kotlin.idea.refactoring.move.traverseOuterInstanceReferences import org.jetbrains.kotlin.idea.references.KtSimpleNameReference -import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress +import org.jetbrains.kotlin.idea.core.util.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchRequest import org.jetbrains.kotlin.idea.search.declarationsSearch.searchOverriders import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveEmptyParenthesesFromLambdaCallIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveEmptyParenthesesFromLambdaCallIntention.kt index 90b370bef2b..308c0cbcdac 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveEmptyParenthesesFromLambdaCallIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveEmptyParenthesesFromLambdaCallIntention.kt @@ -20,7 +20,7 @@ import com.intellij.codeInspection.CleanupLocalInspectionTool import com.intellij.codeInspection.ProblemHighlightType import com.intellij.openapi.editor.Editor import com.intellij.openapi.util.TextRange -import org.jetbrains.kotlin.idea.conversion.copy.range +import org.jetbrains.kotlin.idea.core.util.range import org.jetbrains.kotlin.idea.inspections.IntentionBasedInspection import org.jetbrains.kotlin.idea.refactoring.getLineNumber import org.jetbrains.kotlin.psi.KtCallExpression diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/SplitIfIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/SplitIfIntention.kt index e2d0648c2db..cf9bb40b38a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/SplitIfIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/SplitIfIntention.kt @@ -19,8 +19,8 @@ package org.jetbrains.kotlin.idea.intentions import com.intellij.openapi.editor.Editor import com.intellij.openapi.util.TextRange import com.intellij.psi.util.PsiTreeUtil -import org.jetbrains.kotlin.idea.conversion.copy.range -import org.jetbrains.kotlin.idea.conversion.copy.start +import org.jetbrains.kotlin.idea.core.util.range +import org.jetbrains.kotlin.idea.core.util.start import org.jetbrains.kotlin.idea.util.CommentSaver import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* diff --git a/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt b/idea/src/org/jetbrains/kotlin/idea/j2k/J2KPostProcessingRegistrarImpl.kt similarity index 99% rename from idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt rename to idea/src/org/jetbrains/kotlin/idea/j2k/J2KPostProcessingRegistrarImpl.kt index 6689eb5cf22..a5abde45dbb 100644 --- a/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt +++ b/idea/src/org/jetbrains/kotlin/idea/j2k/J2KPostProcessingRegistrarImpl.kt @@ -61,11 +61,6 @@ interface J2kPostProcessing { val writeActionNeeded: Boolean } -interface J2KPostProcessingRegistrar { - val processings: Collection - fun priority(processing: J2kPostProcessing): Int -} - object J2KPostProcessingRegistrarImpl : J2KPostProcessingRegistrar { private val _processings = ArrayList() diff --git a/idea/src/org/jetbrains/kotlin/idea/joinLines/JoinToStringTemplateHandler.kt b/idea/src/org/jetbrains/kotlin/idea/joinLines/JoinToStringTemplateHandler.kt index 41bda7969c2..f31484594cf 100644 --- a/idea/src/org/jetbrains/kotlin/idea/joinLines/JoinToStringTemplateHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/joinLines/JoinToStringTemplateHandler.kt @@ -19,9 +19,9 @@ package org.jetbrains.kotlin.idea.joinLines import com.intellij.codeInsight.editorActions.JoinRawLinesHandlerDelegate import com.intellij.openapi.editor.Document import com.intellij.psi.PsiFile +import org.jetbrains.kotlin.idea.core.util.getLineCount import org.jetbrains.kotlin.idea.intentions.ConvertToStringTemplateIntention import org.jetbrains.kotlin.idea.intentions.branchedTransformations.lineCount -import org.jetbrains.kotlin.idea.refactoring.getLineCount import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.KtBinaryExpression import org.jetbrains.kotlin.psi.KtFile diff --git a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/custom/KotlinCodeHintsModel.kt b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/custom/KotlinCodeHintsModel.kt index 233c212cdc1..e220cf27c39 100644 --- a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/custom/KotlinCodeHintsModel.kt +++ b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/custom/KotlinCodeHintsModel.kt @@ -14,7 +14,7 @@ import com.intellij.openapi.editor.event.EditorFactoryEvent import com.intellij.openapi.project.Project import com.intellij.psi.PsiElement import com.intellij.util.containers.ContainerUtil -import org.jetbrains.kotlin.idea.conversion.copy.range +import org.jetbrains.kotlin.idea.core.util.range import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.compat.EditorFactoryListenerWrapper import org.jetbrains.kotlin.psi.psiUtil.endOffset diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeSuspendInHierarchyFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeSuspendInHierarchyFix.kt index 122c867bc31..743d0fe05ef 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeSuspendInHierarchyFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeSuspendInHierarchyFix.kt @@ -30,7 +30,7 @@ import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde -import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress +import org.jetbrains.kotlin.idea.core.util.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchRequest import org.jetbrains.kotlin.idea.search.declarationsSearch.searchInheritors import org.jetbrains.kotlin.idea.util.application.runReadAction diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/InitializePropertyQuickFixFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/InitializePropertyQuickFixFactory.kt index db8b864aee7..9d337149959 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/InitializePropertyQuickFixFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/InitializePropertyQuickFixFactory.kt @@ -31,12 +31,12 @@ import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.descriptors.VariableDescriptor import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils import org.jetbrains.kotlin.idea.codeInsight.shorten.runRefactoringAndKeepDelayedRequests import org.jetbrains.kotlin.idea.core.CollectingNameValidator import org.jetbrains.kotlin.idea.core.KotlinNameSuggester import org.jetbrains.kotlin.idea.core.appendElement import org.jetbrains.kotlin.idea.core.getOrCreateBody +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.refactoring.CompositeRefactoringRunner import org.jetbrains.kotlin.idea.refactoring.changeSignature.* import org.jetbrains.kotlin.idea.util.application.runWriteAction diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt index e5ca4f695d4..45665865cbb 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt @@ -45,8 +45,9 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyzeWithAllCompilerChecks import org.jetbrains.kotlin.idea.caches.resolve.analyzeWithContent import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaClassDescriptor -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils import org.jetbrains.kotlin.idea.core.* +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.isMultiLine import org.jetbrains.kotlin.idea.imports.importableFqName import org.jetbrains.kotlin.idea.quickfix.createFromUsage.createClass.ClassKind import org.jetbrains.kotlin.idea.refactoring.* diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createClass/CreateClassFromUsageFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createClass/CreateClassFromUsageFix.kt index ff79dd3d934..583d7e23430 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createClass/CreateClassFromUsageFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createClass/CreateClassFromUsageFix.kt @@ -26,9 +26,9 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.ui.DialogWrapper import com.intellij.psi.* import org.jetbrains.kotlin.idea.KotlinFileType -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils import org.jetbrains.kotlin.idea.core.getPackage import org.jetbrains.kotlin.idea.core.quoteIfNeeded +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.quickfix.IntentionActionPriority import org.jetbrains.kotlin.idea.quickfix.createFromUsage.CreateFromUsageFixBase import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.* diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createTypeParameter/CreateTypeParameterFromUsageFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createTypeParameter/CreateTypeParameterFromUsageFix.kt index 5fecbf9dae8..9330b686106 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createTypeParameter/CreateTypeParameterFromUsageFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createTypeParameter/CreateTypeParameterFromUsageFix.kt @@ -27,9 +27,9 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.core.ShortenReferences import org.jetbrains.kotlin.idea.core.addTypeParameter import org.jetbrains.kotlin.idea.core.replaced +import org.jetbrains.kotlin.idea.core.util.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.intentions.InsertExplicitTypeArgumentsIntention import org.jetbrains.kotlin.idea.quickfix.createFromUsage.CreateFromUsageFixBase -import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runWriteAction diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeInfo.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeInfo.kt index 495c476cfd3..501ee68c64b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeInfo.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeInfo.kt @@ -36,11 +36,12 @@ import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaOrKotlinMemberDescriptor +import org.jetbrains.kotlin.idea.caches.resolve.util.javaResolutionFacade +import org.jetbrains.kotlin.idea.j2k.j2k import org.jetbrains.kotlin.idea.project.TargetPlatformDetector import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinMethodDescriptor.Kind import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinCallableDefinitionUsage import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinCallerUsage -import org.jetbrains.kotlin.idea.refactoring.j2k import org.jetbrains.kotlin.idea.resolve.ResolutionFacade import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.load.java.JvmAbi diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureHandler.kt index 4264661784b..eafbb4668a1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureHandler.kt @@ -35,8 +35,8 @@ import org.jetbrains.kotlin.asJava.unwrapped import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.SYNTHESIZED import org.jetbrains.kotlin.idea.caches.resolve.analyze -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringBundle import org.jetbrains.kotlin.idea.util.expectedDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/copy/CopyKotlinDeclarationsHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/copy/CopyKotlinDeclarationsHandler.kt index 0a52fde9da6..36bcb1c67ee 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/copy/CopyKotlinDeclarationsHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/copy/CopyKotlinDeclarationsHandler.kt @@ -41,12 +41,12 @@ import org.jetbrains.annotations.TestOnly import org.jetbrains.kotlin.idea.codeInsight.shorten.performDelayedRefactoringRequests import org.jetbrains.kotlin.idea.core.getPackage import org.jetbrains.kotlin.idea.core.packageMatchesDirectory +import org.jetbrains.kotlin.idea.core.util.toPsiDirectory import org.jetbrains.kotlin.idea.refactoring.checkConflictsInteractively import org.jetbrains.kotlin.idea.refactoring.createKotlinFile import org.jetbrains.kotlin.idea.refactoring.move.* import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.KotlinDirectoryMoveTarget import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveConflictChecker -import org.jetbrains.kotlin.idea.refactoring.toPsiDirectory import org.jetbrains.kotlin.idea.util.application.executeCommand import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runWriteAction diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsIntentionAction.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsIntentionAction.kt index ad32bee8b41..c9be1b72079 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsIntentionAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsIntentionAction.kt @@ -27,7 +27,7 @@ import com.intellij.openapi.project.Project import com.intellij.psi.PsiElement import com.intellij.psi.util.PsiModificationTracker import com.intellij.refactoring.BaseRefactoringIntentionAction -import org.jetbrains.kotlin.idea.conversion.copy.range +import org.jetbrains.kotlin.idea.core.util.range class MoveDeclarationsIntentionAction( private val processor: MoveDeclarationsProcessor, diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsPassFactory.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsPassFactory.kt index 07f5c47c43f..17835333796 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsPassFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsPassFactory.kt @@ -30,7 +30,7 @@ import com.intellij.openapi.progress.ProgressIndicator import com.intellij.openapi.project.Project import com.intellij.psi.PsiFile import com.intellij.psi.util.PsiModificationTracker -import org.jetbrains.kotlin.idea.conversion.copy.range +import org.jetbrains.kotlin.idea.core.util.range class MoveDeclarationsPassFactory(highlightingPassRegistrar: TextEditorHighlightingPassRegistrar) : ProjectComponent, TextEditorHighlightingPassFactory { diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsProcessor.kt index 2159ee771c0..c1616da71c3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsProcessor.kt @@ -26,9 +26,9 @@ import com.intellij.psi.PsiManager import com.intellij.refactoring.RefactoringBundle import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor import org.jetbrains.kotlin.idea.codeInsight.shorten.runRefactoringAndKeepDelayedRequests -import org.jetbrains.kotlin.idea.conversion.copy.range +import org.jetbrains.kotlin.idea.core.util.range +import org.jetbrains.kotlin.idea.core.util.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.* -import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.getSourceRoot diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/elementSelectionUtils.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/elementSelectionUtils.kt index 7a45d5c35c4..5126f845423 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/elementSelectionUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/elementSelectionUtils.kt @@ -29,7 +29,7 @@ import com.intellij.psi.util.PsiTreeUtil import com.intellij.ui.components.JBList import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.idea.caches.resolve.analyze -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.refactoring.introduce.findExpressionOrStringFragment import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getNextSiblingIgnoringWhitespaceAndComments diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractClass/ExtractSuperRefactoring.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractClass/ExtractSuperRefactoring.kt index 8db604d1b69..1415661f961 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractClass/ExtractSuperRefactoring.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractClass/ExtractSuperRefactoring.kt @@ -42,6 +42,7 @@ import org.jetbrains.kotlin.idea.core.ShortenReferences import org.jetbrains.kotlin.idea.core.copied import org.jetbrains.kotlin.idea.core.getPackage import org.jetbrains.kotlin.idea.core.replaced +import org.jetbrains.kotlin.idea.core.util.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.refactoring.introduce.insertDeclaration import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfo import org.jetbrains.kotlin.idea.refactoring.memberInfo.getChildrenToAnalyze @@ -51,7 +52,6 @@ import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.KotlinMoveTar import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveConflictChecker import org.jetbrains.kotlin.idea.refactoring.pullUp.checkVisibilityInAbstractedMembers import org.jetbrains.kotlin.idea.references.mainReference -import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.runReadAction diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractClass/ui/KotlinExtractSuperDialogBase.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractClass/ui/KotlinExtractSuperDialogBase.kt index f5b9513c7fc..29e2a4d79d5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractClass/ui/KotlinExtractSuperDialogBase.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractClass/ui/KotlinExtractSuperDialogBase.kt @@ -30,11 +30,11 @@ import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.asJava.unwrapped import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.core.unquote +import org.jetbrains.kotlin.idea.core.util.onTextChange import org.jetbrains.kotlin.idea.refactoring.introduce.extractClass.ExtractSuperInfo import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfo import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberSelectionPanel import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinUsesAndInterfacesDependencyMemberInfoModel -import org.jetbrains.kotlin.idea.util.onTextChange import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtNamedDeclaration diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractFunction/ExtractKotlinFunctionHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractFunction/ExtractKotlinFunctionHandler.kt index b65420d913d..c4546bd0fa9 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractFunction/ExtractKotlinFunctionHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractFunction/ExtractKotlinFunctionHandler.kt @@ -22,7 +22,7 @@ import com.intellij.openapi.project.Project import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile import com.intellij.refactoring.RefactoringActionHandler -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringBundle import org.jetbrains.kotlin.idea.refactoring.getExtractionContainers import org.jetbrains.kotlin.idea.refactoring.introduce.extractFunction.ui.KotlinExtractFunctionDialog diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt index 5b28609bc10..06eabc3aca5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt @@ -29,6 +29,7 @@ import org.jetbrains.kotlin.builtins.isFunctionType import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.idea.core.* +import org.jetbrains.kotlin.idea.core.util.isMultiLine import org.jetbrains.kotlin.idea.inspections.PublicApiImplicitTypeInspection import org.jetbrains.kotlin.idea.inspections.UseExpressionBodyInspection import org.jetbrains.kotlin.idea.intentions.InfixCallToOrdinaryIntention @@ -37,7 +38,6 @@ import org.jetbrains.kotlin.idea.intentions.RemoveExplicitTypeArgumentsIntention import org.jetbrains.kotlin.idea.refactoring.introduce.* import org.jetbrains.kotlin.idea.refactoring.introduce.extractionEngine.OutputValue.* import org.jetbrains.kotlin.idea.refactoring.introduce.extractionEngine.OutputValueBoxer.AsTuple -import org.jetbrains.kotlin.idea.refactoring.isMultiLine import org.jetbrains.kotlin.idea.refactoring.removeTemplateEntryBracesIfPossible import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.idea.util.psi.patternMatching.* diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceImportAlias/KotlinIntroduceImportAliasHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceImportAlias/KotlinIntroduceImportAliasHandler.kt index 97aeded575c..bbddcdd409d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceImportAlias/KotlinIntroduceImportAliasHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceImportAlias/KotlinIntroduceImportAliasHandler.kt @@ -20,8 +20,8 @@ import com.intellij.refactoring.rename.inplace.VariableInplaceRenamer import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils import org.jetbrains.kotlin.idea.core.KotlinNameSuggester +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.core.moveCaret import org.jetbrains.kotlin.idea.imports.importableFqName import org.jetbrains.kotlin.idea.refactoring.selectElement diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterDialog.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterDialog.kt index bcf83465810..9778f2bcb95 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterDialog.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterDialog.kt @@ -25,10 +25,10 @@ import com.intellij.refactoring.ui.NameSuggestionsField import com.intellij.refactoring.ui.RefactoringDialog import com.intellij.ui.NonFocusableCheckBox import org.jetbrains.kotlin.idea.KotlinFileType +import org.jetbrains.kotlin.idea.core.util.isMultiLine import org.jetbrains.kotlin.idea.refactoring.introduce.extractFunction.ui.ExtractFunctionParameterTablePanel import org.jetbrains.kotlin.idea.refactoring.introduce.extractFunction.ui.KotlinExtractFunctionDialog import org.jetbrains.kotlin.idea.refactoring.introduce.extractionEngine.* -import org.jetbrains.kotlin.idea.refactoring.isMultiLine import org.jetbrains.kotlin.idea.refactoring.validateElement import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.idea.util.application.executeCommand diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt index 7e6e7f6392f..6786c1fb0d5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt @@ -36,8 +36,9 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils import org.jetbrains.kotlin.idea.core.* +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.refactoring.CompositeRefactoringRunner import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringBundle import org.jetbrains.kotlin.idea.refactoring.changeSignature.* @@ -46,7 +47,6 @@ import org.jetbrains.kotlin.idea.refactoring.introduce.extractionEngine.* import org.jetbrains.kotlin.idea.refactoring.removeTemplateEntryBracesIfPossible import org.jetbrains.kotlin.idea.refactoring.showWithTransaction import org.jetbrains.kotlin.idea.references.mainReference -import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.idea.util.application.executeCommand import org.jetbrains.kotlin.idea.util.application.runReadAction @@ -185,13 +185,13 @@ fun selectNewParameterContext( continuation: (elements: List, targetParent: PsiElement) -> Unit ) { selectElementsWithTargetParent( - operationName = INTRODUCE_PARAMETER, - editor = editor, - file = file, - title = "Introduce parameter to declaration", - elementKinds = listOf(CodeInsightUtils.ElementKind.EXPRESSION), - elementValidator = ::validateExpressionElements, - getContainers = { _, parent -> + operationName = INTRODUCE_PARAMETER, + editor = editor, + file = file, + title = "Introduce parameter to declaration", + elementKinds = listOf(CodeInsightUtils.ElementKind.EXPRESSION), + elementValidator = ::validateExpressionElements, + getContainers = { _, parent -> val parents = parent.parents val stopAt = (parent.parents.zip(parent.parents.drop(1))) .firstOrNull { isObjectOrNonInnerClass(it.first) } @@ -204,7 +204,7 @@ fun selectNewParameterContext( } .toList() }, - continuation = continuation + continuation = continuation ) } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterMethodUsageProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterMethodUsageProcessor.kt index 54fea5d5184..a12b217f1c9 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterMethodUsageProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterMethodUsageProcessor.kt @@ -29,13 +29,13 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaMethodDescriptor +import org.jetbrains.kotlin.idea.j2k.j2k +import org.jetbrains.kotlin.idea.refactoring.dropOverrideKeywordIfNecessary import org.jetbrains.kotlin.idea.refactoring.changeSignature.* import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinCallableDefinitionUsage import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinConstructorDelegationCallUsage import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinFunctionCallUsage import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinUsageInfo -import org.jetbrains.kotlin.idea.refactoring.dropOverrideKeywordIfNecessary -import org.jetbrains.kotlin.idea.refactoring.j2k import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchRequest import org.jetbrains.kotlin.idea.search.declarationsSearch.searchOverriders import org.jetbrains.kotlin.psi.* diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceProperty/KotlinIntroducePropertyHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceProperty/KotlinIntroducePropertyHandler.kt index dc3866c1b83..8ce28eb62bf 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceProperty/KotlinIntroducePropertyHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceProperty/KotlinIntroducePropertyHandler.kt @@ -24,7 +24,7 @@ import com.intellij.psi.PsiDocumentManager import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile import com.intellij.refactoring.RefactoringActionHandler -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringBundle import org.jetbrains.kotlin.idea.refactoring.getExtractionContainers import org.jetbrains.kotlin.idea.refactoring.introduce.extractionEngine.* diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeAlias/IntroduceTypeAliasHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeAlias/IntroduceTypeAliasHandler.kt index fb5086fe257..3d4d1db44a3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeAlias/IntroduceTypeAliasHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeAlias/IntroduceTypeAliasHandler.kt @@ -26,8 +26,8 @@ import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile import com.intellij.refactoring.RefactoringActionHandler import org.jetbrains.kotlin.config.LanguageFeature -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils.ElementKind.TYPE_CONSTRUCTOR -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils.ElementKind.TYPE_ELEMENT +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils.ElementKind.TYPE_CONSTRUCTOR +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils.ElementKind.TYPE_ELEMENT import org.jetbrains.kotlin.idea.project.languageVersionSettings import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringSupportProvider import org.jetbrains.kotlin.idea.refactoring.checkConflictsInteractively diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeParameter/KotlinIntroduceTypeParameterHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeParameter/KotlinIntroduceTypeParameterHandler.kt index a232235d9f5..1654c0a857c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeParameter/KotlinIntroduceTypeParameterHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeParameter/KotlinIntroduceTypeParameterHandler.kt @@ -30,7 +30,7 @@ import com.intellij.psi.PsiFile import com.intellij.refactoring.RefactoringActionHandler import com.intellij.usageView.UsageViewTypeLocation import org.jetbrains.kotlin.idea.caches.resolve.analyze -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.core.CollectingNameValidator import org.jetbrains.kotlin.idea.core.KotlinNameSuggester import org.jetbrains.kotlin.idea.quickfix.createFromUsage.createTypeParameter.CreateTypeParameterByUnresolvedRefActionFactory diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceUtil.kt index e1514069f31..c582ef0ca76 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceUtil.kt @@ -24,7 +24,7 @@ import com.intellij.openapi.util.TextRange import com.intellij.psi.PsiElement import com.intellij.psi.PsiWhiteSpace import com.intellij.psi.util.PsiTreeUtil -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringBundle import org.jetbrains.kotlin.idea.refactoring.chooseContainerElementIfNecessary import org.jetbrains.kotlin.idea.refactoring.selectElement diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.kt index bf038be4055..66743c85c38 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.kt @@ -42,7 +42,7 @@ import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor import org.jetbrains.kotlin.idea.analysis.analyzeInContext import org.jetbrains.kotlin.idea.analysis.computeTypeInfoInContext import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.core.* import org.jetbrains.kotlin.idea.intentions.ConvertToBlockBodyIntention import org.jetbrains.kotlin.idea.refactoring.* diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt index f3bfbd64a9e..ab876c032b5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt @@ -125,21 +125,6 @@ fun createKotlinFile( return targetDir.add(file) as KtFile } -fun File.toVirtualFile(): VirtualFile? = LocalFileSystem.getInstance().findFileByIoFile(this) - -fun File.toPsiFile(project: Project): PsiFile? = toVirtualFile()?.toPsiFile(project) - -fun File.toPsiDirectory(project: Project): PsiDirectory? { - return toVirtualFile()?.let { vfile -> PsiManager.getInstance(project).findDirectory(vfile) } -} - -fun VirtualFile.toPsiFile(project: Project): PsiFile? = PsiManager.getInstance(project).findFile(this) - -fun VirtualFile.toPsiDirectory(project: Project): PsiDirectory? = PsiManager.getInstance(project).findDirectory(this) - -fun VirtualFile.toPsiFileOrDirectory(project: Project): PsiFileSystemItem? = - if (isDirectory) toPsiDirectory(project) else toPsiFile(project) - fun PsiElement.getUsageContext(): PsiElement { return when (this) { is KtElement -> PsiTreeUtil.getParentOfType( @@ -324,49 +309,11 @@ class SelectionAwareScopeHighlighter(val editor: Editor) { } } -fun PsiFile.getLineStartOffset(line: Int): Int? { - val doc = viewProvider.document ?: PsiDocumentManager.getInstance(project).getDocument(this) - if (doc != null && line >= 0 && line < doc.lineCount) { - val startOffset = doc.getLineStartOffset(line) - val element = findElementAt(startOffset) ?: return startOffset - - if (element is PsiWhiteSpace || element is PsiComment) { - return PsiTreeUtil.skipSiblingsForward(element, PsiWhiteSpace::class.java, PsiComment::class.java)?.startOffset ?: startOffset - } - return startOffset - } - - return null -} - -fun PsiFile.getLineEndOffset(line: Int): Int? { - val document = viewProvider.document ?: PsiDocumentManager.getInstance(project).getDocument(this) - return document?.getLineEndOffset(line) -} - fun PsiElement.getLineNumber(start: Boolean = true): Int { val document = containingFile.viewProvider.document ?: PsiDocumentManager.getInstance(project).getDocument(containingFile) return document?.getLineNumber(if (start) this.startOffset else this.endOffset) ?: 0 } -fun PsiElement.getLineCount(): Int { - val doc = containingFile?.let { file -> PsiDocumentManager.getInstance(project).getDocument(file) } - if (doc != null) { - val spaceRange = textRange ?: TextRange.EMPTY_RANGE - - if (spaceRange.endOffset <= doc.textLength) { - val startLine = doc.getLineNumber(spaceRange.startOffset) - val endLine = doc.getLineNumber(spaceRange.endOffset) - - return endLine - startLine - } - } - - return (text ?: "").count { it == '\n' } + 1 -} - -fun PsiElement.isMultiLine(): Boolean = getLineCount() > 1 - class SeparateFileWrapper(manager: PsiManager) : LightElement(manager, KotlinLanguage.INSTANCE) { override fun toString() = "" } @@ -642,31 +589,6 @@ fun createJavaClass(klass: KtClass, targetClass: PsiClass?, forcePlainClass: Boo return javaClass } -fun PsiElement.j2kText(): String? = - convertToKotlin()?.results?.single()?.text //TODO: insert imports - -fun PsiElement.convertToKotlin(): org.jetbrains.kotlin.j2k.Result? { - if (language != JavaLanguage.INSTANCE) return null - - val j2kConverter = - JavaToKotlinConverterFactory.createJavaToKotlinConverter( - project, - ConverterSettings.defaultSettings, - IdeaJavaToKotlinServices - ) - return j2kConverter.elementsToKotlin(listOf(this)) -} - -fun PsiExpression.j2k(): KtExpression? { - val text = j2kText() ?: return null - return KtPsiFactory(project).createExpression(text) -} - -fun PsiMember.j2k(): KtNamedDeclaration? { - val text = j2kText() ?: return null - return KtPsiFactory(project).createDeclaration(text) -} - internal fun broadcastRefactoringExit(project: Project, refactoringId: String) { project.messageBus.syncPublisher(KotlinRefactoringEventListener.EVENT_TOPIC).onRefactoringExit(refactoringId) } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/changePackage/ChangePackageIntention.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/changePackage/ChangePackageIntention.kt index 3168f92762a..7f18c721bc8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/changePackage/ChangePackageIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/changePackage/ChangePackageIntention.kt @@ -23,7 +23,7 @@ import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.editor.Editor import com.intellij.openapi.util.TextRange import com.intellij.psi.PsiDocumentManager -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.core.quoteSegmentsIfNeeded import org.jetbrains.kotlin.idea.intentions.SelfTargetingOffsetIndependentIntention import org.jetbrains.kotlin.idea.refactoring.hasIdentifiersOnly diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/changePackage/KotlinChangePackageRefactoring.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/changePackage/KotlinChangePackageRefactoring.kt index 2d77e369760..09e6236ce3f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/changePackage/KotlinChangePackageRefactoring.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/changePackage/KotlinChangePackageRefactoring.kt @@ -19,12 +19,12 @@ package org.jetbrains.kotlin.idea.refactoring.move.changePackage import com.intellij.refactoring.RefactoringBundle import org.jetbrains.kotlin.idea.codeInsight.shorten.runRefactoringAndKeepDelayedRequests import org.jetbrains.kotlin.idea.core.quoteIfNeeded +import org.jetbrains.kotlin.idea.core.util.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.refactoring.move.ContainerChangeInfo import org.jetbrains.kotlin.idea.refactoring.move.ContainerInfo import org.jetbrains.kotlin.idea.refactoring.move.getInternalReferencesToUpdateOnPackageNameChange import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.* import org.jetbrains.kotlin.idea.refactoring.move.postProcessMoveUsages -import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.name.FqName diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesDialog.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesDialog.kt index dfa1f8fb36d..925eeb3ed95 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesDialog.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesDialog.kt @@ -32,10 +32,10 @@ import com.intellij.util.IncorrectOperationException import com.intellij.util.ui.FormBuilder import com.intellij.util.ui.UIUtil import org.jetbrains.kotlin.idea.core.packageMatchesDirectory +import org.jetbrains.kotlin.idea.core.util.onTextChange import org.jetbrains.kotlin.idea.refactoring.isInJavaSourceRoot import org.jetbrains.kotlin.idea.util.application.executeCommand import org.jetbrains.kotlin.idea.util.application.runWriteAction -import org.jetbrains.kotlin.idea.util.onTextChange import org.jetbrains.kotlin.psi.KtFile import java.io.File import javax.swing.JComponent 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 d3a42c6e63b..d06c66ea450 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 @@ -56,6 +56,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.idea.KotlinFileType; import org.jetbrains.kotlin.idea.core.PackageUtilsKt; +import org.jetbrains.kotlin.idea.core.util.PhysicalFileSystemUtilsKt; import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringBundle; import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringUtilKt; import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfo; @@ -376,12 +377,12 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { KotlinFileChooserDialog dialog = new KotlinFileChooserDialog("Choose Containing File", myProject); File targetFile = new File(getTargetFilePath()); - PsiFile targetPsiFile = KotlinRefactoringUtilKt.toPsiFile(targetFile, myProject); + PsiFile targetPsiFile = PhysicalFileSystemUtilsKt.toPsiFile(targetFile, myProject); if (targetPsiFile instanceof KtFile) { dialog.select((KtFile) targetPsiFile); } else { - PsiDirectory targetDir = KotlinRefactoringUtilKt.toPsiDirectory(targetFile.getParentFile(), myProject); + PsiDirectory targetDir = PhysicalFileSystemUtilsKt.toPsiDirectory(targetFile.getParentFile(), myProject); if (targetDir == null) { targetDir = sourceDir; } @@ -589,7 +590,7 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { final File targetFile = new File(getTargetFilePath()); if (!checkTargetFileName(targetFile.getName())) return null; - KtFile jetFile = (KtFile) KotlinRefactoringUtilKt.toPsiFile(targetFile, myProject); + KtFile jetFile = (KtFile) PhysicalFileSystemUtilsKt.toPsiFile(targetFile, myProject); if (jetFile != null) { if (sourceFiles.size() == 1 && sourceFiles.contains(jetFile)) { setErrorText("Can't move to the original file"); @@ -605,7 +606,7 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { setErrorText("Incorrect target path. Directory " + targetDirPath + " does not belong to current project."); return null; } - if (KotlinRefactoringUtilKt.toPsiDirectory(targetDirPath.toFile(), myProject) == null) { + if (PhysicalFileSystemUtilsKt.toPsiDirectory(targetDirPath.toFile(), myProject) == null) { int ret = Messages.showYesNoDialog( myProject, "You are about to move all declarations to the directory that does not exist. Do you want to create it?", @@ -624,7 +625,7 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { } File targetDir = targetDirPath.toFile(); - final PsiDirectory psiDirectory = targetDir != null ? KotlinRefactoringUtilKt.toPsiDirectory(targetDir, myProject) : null; + final PsiDirectory psiDirectory = targetDir != null ? PhysicalFileSystemUtilsKt.toPsiDirectory(targetDir, myProject) : null; if (psiDirectory == null) { setErrorText("No directory found for file: " + targetFile.getPath()); return null; @@ -675,7 +676,7 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { } } else { - PsiFile targetFile = KotlinRefactoringUtilKt.toPsiFile(new File(getTargetFilePath()), myProject); + PsiFile targetFile = PhysicalFileSystemUtilsKt.toPsiFile(new File(getTargetFilePath()), myProject); if (!(targetFile == null || targetFile instanceof KtFile)) { return KotlinRefactoringBundle.message("refactoring.move.non.kotlin.file"); } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/JavaToKotlinPreconversionPullUpHelper.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/JavaToKotlinPreconversionPullUpHelper.kt index 38483012fb9..ed49237cc60 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/JavaToKotlinPreconversionPullUpHelper.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/JavaToKotlinPreconversionPullUpHelper.kt @@ -31,8 +31,8 @@ import org.jetbrains.kotlin.asJava.unwrapped import org.jetbrains.kotlin.idea.codeInsight.shorten.addToShorteningWaitSet import org.jetbrains.kotlin.idea.core.getOrCreateCompanionObject import org.jetbrains.kotlin.idea.core.setVisibility -import org.jetbrains.kotlin.idea.refactoring.j2k -import org.jetbrains.kotlin.idea.refactoring.j2kText +import org.jetbrains.kotlin.idea.j2k.j2k +import org.jetbrains.kotlin.idea.j2k.j2kText import org.jetbrains.kotlin.idea.refactoring.safeDelete.removeOverrideModifier import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.load.java.JvmAbi diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/pushDown/JavaToKotlinPushDownDelegate.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/pushDown/JavaToKotlinPushDownDelegate.kt index 454b495300e..22ceb2f9842 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/pushDown/JavaToKotlinPushDownDelegate.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/pushDown/JavaToKotlinPushDownDelegate.kt @@ -31,9 +31,9 @@ import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaClassDescriptor import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaMemberDescriptor import org.jetbrains.kotlin.idea.core.getOrCreateCompanionObject +import org.jetbrains.kotlin.idea.j2k.j2k +import org.jetbrains.kotlin.idea.j2k.j2kText import org.jetbrains.kotlin.idea.refactoring.isInterfaceClass -import org.jetbrains.kotlin.idea.refactoring.j2k -import org.jetbrains.kotlin.idea.refactoring.j2kText import org.jetbrains.kotlin.idea.refactoring.pullUp.addMemberToTarget import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.KtCallableDeclaration diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/pushDown/KotlinPushDownProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/pushDown/KotlinPushDownProcessor.kt index a78b9504a26..0fc5b355f8f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/pushDown/KotlinPushDownProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/pushDown/KotlinPushDownProcessor.kt @@ -33,10 +33,10 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaClassDescriptor import org.jetbrains.kotlin.idea.codeInsight.shorten.addToShorteningWaitSet +import org.jetbrains.kotlin.idea.core.util.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfo import org.jetbrains.kotlin.idea.refactoring.memberInfo.KtPsiClassWrapper import org.jetbrains.kotlin.idea.refactoring.pullUp.* -import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchRequest import org.jetbrains.kotlin.idea.search.declarationsSearch.searchInheritors import org.jetbrains.kotlin.idea.util.application.runReadAction diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AbstractReferenceSubstitutionRenameHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AbstractReferenceSubstitutionRenameHandler.kt index f10d11785be..4e88959c111 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AbstractReferenceSubstitutionRenameHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AbstractReferenceSubstitutionRenameHandler.kt @@ -27,7 +27,7 @@ import com.intellij.psi.PsiWhiteSpace import com.intellij.refactoring.rename.PsiElementRenameHandler import com.intellij.refactoring.rename.RenameHandler import com.intellij.refactoring.rename.inplace.MemberInplaceRenameHandler -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtSimpleNameExpression diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameBackingFieldReferenceHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameBackingFieldReferenceHandler.kt index 2fdb0e50667..9abbb690edd 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameBackingFieldReferenceHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameBackingFieldReferenceHandler.kt @@ -23,7 +23,7 @@ import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.psi.KtSimpleNameExpression class RenameBackingFieldReferenceHandler: KotlinVariableInplaceRenameHandler() { diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameDynamicMemberHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameDynamicMemberHandler.kt index 30100fd4dcb..10faac933ca 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameDynamicMemberHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameDynamicMemberHandler.kt @@ -23,7 +23,7 @@ import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile import com.intellij.psi.util.PsiTreeUtil import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.psi.KtSimpleNameExpression import org.jetbrains.kotlin.resolve.calls.tasks.isDynamic diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameOnSecondaryConstructorHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameOnSecondaryConstructorHandler.kt index 21e7d4bb786..78da4334fbc 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameOnSecondaryConstructorHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameOnSecondaryConstructorHandler.kt @@ -24,7 +24,7 @@ import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile import com.intellij.psi.util.PsiTreeUtil import com.intellij.refactoring.rename.RenameHandler -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.psi.* diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameSyntheticDeclarationByReferenceHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameSyntheticDeclarationByReferenceHandler.kt index 074ae2f1981..fd6bfd313df 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameSyntheticDeclarationByReferenceHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameSyntheticDeclarationByReferenceHandler.kt @@ -13,7 +13,7 @@ import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile import com.intellij.refactoring.rename.RenameHandler import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.statistics.FUSEventGroups import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger import org.jetbrains.kotlin.psi.KtSimpleNameExpression diff --git a/idea/src/org/jetbrains/kotlin/idea/roots/KotlinNonJvmSourceRootConverterProvider.kt b/idea/src/org/jetbrains/kotlin/idea/roots/KotlinNonJvmSourceRootConverterProvider.kt index 92862f37f3c..42b8cd38b81 100644 --- a/idea/src/org/jetbrains/kotlin/idea/roots/KotlinNonJvmSourceRootConverterProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/roots/KotlinNonJvmSourceRootConverterProvider.kt @@ -36,7 +36,7 @@ import org.jetbrains.kotlin.idea.facet.KotlinFacetType import org.jetbrains.kotlin.idea.framework.JavaRuntimeDetectionUtil import org.jetbrains.kotlin.idea.framework.JsLibraryStdDetectionUtil import org.jetbrains.kotlin.idea.framework.getLibraryJar -import org.jetbrains.kotlin.idea.refactoring.toVirtualFile +import org.jetbrains.kotlin.idea.core.util.toVirtualFile import org.jetbrains.kotlin.platform.CommonPlatforms import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.isCommon diff --git a/idea/src/org/jetbrains/kotlin/idea/testIntegration/KotlinCreateTestIntention.kt b/idea/src/org/jetbrains/kotlin/idea/testIntegration/KotlinCreateTestIntention.kt index e95c5842fda..bf05b958888 100644 --- a/idea/src/org/jetbrains/kotlin/idea/testIntegration/KotlinCreateTestIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/testIntegration/KotlinCreateTestIntention.kt @@ -38,9 +38,9 @@ import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.idea.actions.JavaToKotlinAction import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny import org.jetbrains.kotlin.idea.core.getPackage +import org.jetbrains.kotlin.idea.core.util.toPsiDirectory import org.jetbrains.kotlin.idea.intentions.SelfTargetingRangeIntention -import org.jetbrains.kotlin.idea.refactoring.j2k -import org.jetbrains.kotlin.idea.refactoring.toPsiDirectory +import org.jetbrains.kotlin.idea.j2k.j2k import org.jetbrains.kotlin.idea.util.application.executeCommand import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.idea.util.runWhenSmart diff --git a/idea/src/org/jetbrains/kotlin/idea/versions/KotlinRuntimeLibraryUtil.kt b/idea/src/org/jetbrains/kotlin/idea/versions/KotlinRuntimeLibraryUtil.kt index 1e09fd62c11..606e27515a3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/versions/KotlinRuntimeLibraryUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/versions/KotlinRuntimeLibraryUtil.kt @@ -191,14 +191,6 @@ fun showRuntimeJarNotFoundDialog(project: Project, jarName: String) { ) } -fun getKotlinJvmRuntimeMarkerClass(project: Project, scope: GlobalSearchScope): PsiClass? { - return runReadAction { - project.runWithAlternativeResolveEnabled { - JavaPsiFacade.getInstance(project).findClass(KotlinBuiltIns.FQ_NAMES.unit.asString(), scope) - } - } -} - private val KOTLIN_JS_FQ_NAME = FqName("kotlin.js") fun hasKotlinJsKjsmFile(project: Project, scope: GlobalSearchScope): Boolean { diff --git a/idea/testData/gradle/highlighting/complexBuildGradleKts/build.gradle.kts b/idea/testData/gradle/highlighting/complexBuildGradleKts/build.gradle.kts index 19ab760884e..f4772be68ec 100644 --- a/idea/testData/gradle/highlighting/complexBuildGradleKts/build.gradle.kts +++ b/idea/testData/gradle/highlighting/complexBuildGradleKts/build.gradle.kts @@ -377,7 +377,11 @@ tasks { dependsOn(":idea:idea-gradle:test", ":idea:idea-maven:test", ":j2k:test", - ":idea:eval4j:test") + "idea:jvm-debugger:jvm-debugger-util:test", + "idea:jvm-debugger:jvm-debugger-core:test", + "idea:jvm-debugger:jvm-debugger-evaluation:test", + "idea:jvm-debugger:jvm-debugger-sequence:test", + ":idea:jvm-debugger:eval4j:test") } create("idea-plugin-tests") { diff --git a/idea/tests/org/jetbrains/kotlin/idea/AbstractExpressionSelectionTest.kt b/idea/tests/org/jetbrains/kotlin/idea/AbstractExpressionSelectionTest.kt index d67f78fbe30..71f6704dd8b 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/AbstractExpressionSelectionTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/AbstractExpressionSelectionTest.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.idea import com.intellij.testFramework.LightCodeInsightTestCase -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.refactoring.IntroduceRefactoringException import org.jetbrains.kotlin.idea.refactoring.selectElement import org.jetbrains.kotlin.psi.KtFile diff --git a/idea/tests/org/jetbrains/kotlin/idea/AbstractSmartSelectionTest.kt b/idea/tests/org/jetbrains/kotlin/idea/AbstractSmartSelectionTest.kt index 0a5fced3ad4..52615977fbf 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/AbstractSmartSelectionTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/AbstractSmartSelectionTest.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.idea import com.intellij.testFramework.LightCodeInsightTestCase -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.refactoring.getExpressionShortText import org.jetbrains.kotlin.idea.refactoring.getSmartSelectSuggestions import org.jetbrains.kotlin.psi.KtFile diff --git a/idea/tests/org/jetbrains/kotlin/idea/debugger/AbstractSmartStepIntoTest.kt b/idea/tests/org/jetbrains/kotlin/idea/debugger/AbstractSmartStepIntoTest.kt index de900db56e6..0734d4b4a98 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/debugger/AbstractSmartStepIntoTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/debugger/AbstractSmartStepIntoTest.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.idea.debugger import com.intellij.testFramework.fixtures.JavaCodeInsightTestFixture -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.debugger.stepping.KotlinSmartStepIntoHandler import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor diff --git a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/AbstractEditorForEvaluateExpressionTest.kt b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/AbstractEditorForEvaluateExpressionTest.kt index 2e2b2fd576d..923f5712160 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/AbstractEditorForEvaluateExpressionTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/AbstractEditorForEvaluateExpressionTest.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference import org.jetbrains.kotlin.idea.completion.test.AbstractJvmBasicCompletionTest import org.jetbrains.kotlin.idea.completion.test.ExpectedCompletionUtils import org.jetbrains.kotlin.idea.completion.test.handlers.AbstractCompletionHandlerTest +import org.jetbrains.kotlin.idea.debugger.getContextElement import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor import org.jetbrains.kotlin.idea.util.ImportInsertHelper import org.jetbrains.kotlin.idea.util.application.executeWriteCommand @@ -130,13 +131,7 @@ private fun createCodeFragment(filePath: String, contextElement: PsiElement): Kt val codeFragmentText = FileUtil.loadFile(fileForFragment, true).trim() val psiFactory = KtPsiFactory(contextElement.project) if (fileForFragment.readLines().size == 1) { - return psiFactory.createExpressionCodeFragment( - codeFragmentText, - KotlinCodeFragmentFactory.getContextElement(contextElement) - ) + return psiFactory.createExpressionCodeFragment(codeFragmentText, getContextElement(contextElement)) } - return psiFactory.createBlockCodeFragment( - codeFragmentText, - KotlinCodeFragmentFactory.getContextElement(contextElement) - ) + return psiFactory.createBlockCodeFragment(codeFragmentText, getContextElement(contextElement)) } diff --git a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/CodeFragmentCompletionInLibraryTest.kt b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/CodeFragmentCompletionInLibraryTest.kt index 5d3ecc3c4ad..1f27eda07dc 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/CodeFragmentCompletionInLibraryTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/CodeFragmentCompletionInLibraryTest.kt @@ -14,6 +14,7 @@ import com.intellij.psi.PsiManager import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.idea.completion.test.AbstractJvmBasicCompletionTest import org.jetbrains.kotlin.idea.completion.test.testCompletion +import org.jetbrains.kotlin.idea.debugger.getContextElement import org.jetbrains.kotlin.idea.test.SdkAndMockLibraryProjectDescriptor import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFunction @@ -69,8 +70,8 @@ class CodeFragmentCompletionInLibraryTest : AbstractJvmBasicCompletionTest() { val jetFile = PsiManager.getInstance(project).findFile(sourceFile) as KtFile val fooFunctionFromLibrary = jetFile.declarations.first() as KtFunction val codeFragment = KtPsiFactory(fooFunctionFromLibrary).createExpressionCodeFragment( - fragmentText, - KotlinCodeFragmentFactory.getContextElement(fooFunctionFromLibrary.bodyExpression) + fragmentText, + getContextElement(fooFunctionFromLibrary.bodyExpression) ) codeFragment.forceResolveScope(GlobalSearchScope.allScope(project)) myFixture.configureFromExistingVirtualFile(codeFragment.virtualFile) diff --git a/idea/tests/org/jetbrains/kotlin/idea/filters/AbstractKotlinExceptionFilterTest.kt b/idea/tests/org/jetbrains/kotlin/idea/filters/AbstractKotlinExceptionFilterTest.kt index 0a54fe4db99..a63fee515f3 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/filters/AbstractKotlinExceptionFilterTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/filters/AbstractKotlinExceptionFilterTest.kt @@ -16,7 +16,7 @@ import com.intellij.psi.search.GlobalSearchScope import com.intellij.testFramework.PsiTestUtil import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil -import org.jetbrains.kotlin.idea.refactoring.toVirtualFile +import org.jetbrains.kotlin.idea.core.util.toVirtualFile import org.jetbrains.kotlin.idea.test.KotlinCodeInsightTestCase import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.psi.KtFile diff --git a/idea/tests/org/jetbrains/kotlin/idea/filters/KotlinExceptionFilterTest.kt b/idea/tests/org/jetbrains/kotlin/idea/filters/KotlinExceptionFilterTest.kt index 8212471e0be..57fe261c5c7 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/filters/KotlinExceptionFilterTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/filters/KotlinExceptionFilterTest.kt @@ -10,7 +10,7 @@ import com.intellij.openapi.fileEditor.FileDocumentManager import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.search.GlobalSearchScope import com.intellij.testFramework.LightProjectDescriptor -import org.jetbrains.kotlin.idea.refactoring.toVirtualFile +import org.jetbrains.kotlin.idea.core.util.toVirtualFile import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner import org.junit.Assert diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinMultiModuleChangeSignatureTest.kt b/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinMultiModuleChangeSignatureTest.kt index 66631fd9cc3..30261733111 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinMultiModuleChangeSignatureTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinMultiModuleChangeSignatureTest.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.idea.refactoring.changeSignature import com.intellij.psi.PsiDocumentManager import org.jetbrains.kotlin.idea.caches.resolve.analyze -import org.jetbrains.kotlin.idea.refactoring.toPsiFile +import org.jetbrains.kotlin.idea.core.util.toPsiFile import org.jetbrains.kotlin.idea.test.KotlinMultiFileTestCase import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.idea.test.extractMarkerOffset diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/copy/AbstractCopyTest.kt b/idea/tests/org/jetbrains/kotlin/idea/refactoring/copy/AbstractCopyTest.kt index ec2bc1606c2..d64571e09c2 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/copy/AbstractCopyTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/copy/AbstractCopyTest.kt @@ -13,12 +13,12 @@ import com.intellij.psi.PsiFile import com.intellij.refactoring.PackageWrapper import com.intellij.refactoring.copy.CopyHandler import com.intellij.refactoring.move.moveClassesOrPackages.MultipleRootsMoveDestination +import org.jetbrains.kotlin.idea.core.util.toPsiDirectory import org.jetbrains.kotlin.idea.jsonUtils.getNullableString import org.jetbrains.kotlin.idea.jsonUtils.getString import org.jetbrains.kotlin.idea.refactoring.AbstractMultifileRefactoringTest import org.jetbrains.kotlin.idea.refactoring.copy.CopyKotlinDeclarationsHandler.Companion.newName import org.jetbrains.kotlin.idea.refactoring.runRefactoringTest -import org.jetbrains.kotlin.idea.refactoring.toPsiDirectory import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.utils.ifEmpty diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/AbstractExtractionTest.kt b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/AbstractExtractionTest.kt index 68de80814fc..63735923b6a 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/AbstractExtractionTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/AbstractExtractionTest.kt @@ -32,7 +32,7 @@ import com.intellij.testFramework.fixtures.CodeInsightTestFixture import com.intellij.testFramework.fixtures.JavaCodeInsightTestFixture import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase import org.jetbrains.kotlin.idea.KotlinFileType -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesManager import org.jetbrains.kotlin.idea.refactoring.checkConflictsInteractively import org.jetbrains.kotlin.idea.refactoring.chooseMembers diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/AbstractMoveTest.kt b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/AbstractMoveTest.kt index a65fbf62f83..a4e19eae489 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/AbstractMoveTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/AbstractMoveTest.kt @@ -20,6 +20,8 @@ import com.intellij.refactoring.move.moveInner.MoveInnerProcessor import com.intellij.refactoring.move.moveMembers.MockMoveMembersOptions import com.intellij.refactoring.move.moveMembers.MoveMembersProcessor import com.intellij.util.ActionRunner +import org.jetbrains.kotlin.idea.core.util.toPsiDirectory +import org.jetbrains.kotlin.idea.core.util.toPsiFile import org.jetbrains.kotlin.idea.jsonUtils.getNullableString import org.jetbrains.kotlin.idea.jsonUtils.getString import org.jetbrains.kotlin.idea.refactoring.* diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveKotlinDeclarationsHandlerTest.kt b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveKotlinDeclarationsHandlerTest.kt index 7429988b52b..0187cd8ce1c 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveKotlinDeclarationsHandlerTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveKotlinDeclarationsHandlerTest.kt @@ -11,9 +11,9 @@ import com.intellij.psi.JavaPsiFacade import com.intellij.psi.PsiDocumentManager import com.intellij.psi.PsiElement import com.intellij.testFramework.PsiTestUtil +import org.jetbrains.kotlin.idea.core.util.toPsiDirectory +import org.jetbrains.kotlin.idea.core.util.toPsiFile import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveKotlinDeclarationsHandler -import org.jetbrains.kotlin.idea.refactoring.toPsiDirectory -import org.jetbrains.kotlin.idea.refactoring.toPsiFile import org.jetbrains.kotlin.idea.test.KotlinMultiFileTestCase import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.idea.test.extractMultipleMarkerOffsets diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/nameSuggester/KotlinNameSuggesterTest.kt b/idea/tests/org/jetbrains/kotlin/idea/refactoring/nameSuggester/KotlinNameSuggesterTest.kt index 6ac3febef55..19d87f66bfb 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/nameSuggester/KotlinNameSuggesterTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/nameSuggester/KotlinNameSuggesterTest.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.idea.refactoring.nameSuggester import com.intellij.openapi.util.text.StringUtil import org.jetbrains.kotlin.idea.caches.resolve.analyze -import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils import org.jetbrains.kotlin.idea.core.KotlinNameSuggester import org.jetbrains.kotlin.idea.refactoring.IntroduceRefactoringException import org.jetbrains.kotlin.idea.refactoring.selectElement diff --git a/nj2k/nj2k-services/src/org/jetbrains/kotlin/nj2k/J2kPostProcessor.kt b/nj2k/nj2k-services/src/org/jetbrains/kotlin/nj2k/J2kPostProcessor.kt index e66afcfc7d7..434dfbf482c 100644 --- a/nj2k/nj2k-services/src/org/jetbrains/kotlin/nj2k/J2kPostProcessor.kt +++ b/nj2k/nj2k-services/src/org/jetbrains/kotlin/nj2k/J2kPostProcessor.kt @@ -28,9 +28,9 @@ import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withContext import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference -import org.jetbrains.kotlin.idea.conversion.copy.range import org.jetbrains.kotlin.idea.core.ShortenReferences import org.jetbrains.kotlin.idea.core.util.EDT +import org.jetbrains.kotlin.idea.core.util.range import org.jetbrains.kotlin.idea.formatter.commitAndUnblockDocument import org.jetbrains.kotlin.idea.util.ImportInsertHelper import org.jetbrains.kotlin.idea.util.application.runReadAction diff --git a/prepare/idea-plugin/build.gradle.kts b/prepare/idea-plugin/build.gradle.kts index a6137df77ce..321ba4d0931 100644 --- a/prepare/idea-plugin/build.gradle.kts +++ b/prepare/idea-plugin/build.gradle.kts @@ -28,7 +28,12 @@ val projectsToShadow by extra(listOf( ":core:descriptors", ":core:descriptors.jvm", ":core:deserialization", - ":idea:eval4j", + ":idea:jvm-debugger:eval4j", + ":idea:jvm-debugger:jvm-debugger-util", + ":idea:jvm-debugger:jvm-debugger-core", + ":idea:jvm-debugger:jvm-debugger-evaluation", + ":idea:jvm-debugger:jvm-debugger-sequence", + ":idea:idea-j2k", ":idea:formatter", ":compiler:psi", ":compiler:fir:cones", diff --git a/settings.gradle b/settings.gradle index c1d64fc5a99..95d17a2b43e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -102,8 +102,13 @@ include ":kotlin-build-common", ":idea:idea-gradle-native", ":idea", ":idea-runner", - ":idea:eval4j", + ":idea:jvm-debugger:eval4j", + ":idea:jvm-debugger:jvm-debugger-util", + ":idea:jvm-debugger:jvm-debugger-core", + ":idea:jvm-debugger:jvm-debugger-evaluation", + ":idea:jvm-debugger:jvm-debugger-sequence", ":j2k", + ":idea:idea-j2k", ":nj2k", ":nj2k:nj2k-services", ":plugins:lint",