Switch to 193 platform
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
192
|
|
||||||
193
|
193
|
||||||
191
|
192
|
||||||
as35_191
|
191_192
|
||||||
as36
|
as35_191_192
|
||||||
as40_193
|
as36_192
|
||||||
|
as40
|
||||||
+140
-7
@@ -5,39 +5,76 @@
|
|||||||
package org.jetbrains.kotlin.cli.jvm.compiler;
|
package org.jetbrains.kotlin.cli.jvm.compiler;
|
||||||
|
|
||||||
import com.intellij.codeInsight.ContainerProvider;
|
import com.intellij.codeInsight.ContainerProvider;
|
||||||
|
import com.intellij.codeInsight.JavaContainerProvider;
|
||||||
|
import com.intellij.codeInsight.folding.JavaCodeFoldingSettings;
|
||||||
|
import com.intellij.codeInsight.folding.impl.JavaCodeFoldingSettingsBase;
|
||||||
|
import com.intellij.codeInsight.folding.impl.JavaFoldingBuilderBase;
|
||||||
import com.intellij.codeInsight.runner.JavaMainMethodProvider;
|
import com.intellij.codeInsight.runner.JavaMainMethodProvider;
|
||||||
import com.intellij.core.CoreApplicationEnvironment;
|
import com.intellij.core.CoreApplicationEnvironment;
|
||||||
import com.intellij.core.JavaCoreApplicationEnvironment;
|
import com.intellij.core.CoreJavaDirectoryService;
|
||||||
|
import com.intellij.core.CorePsiPackageImplementationHelper;
|
||||||
|
import com.intellij.ide.highlighter.ArchiveFileType;
|
||||||
|
import com.intellij.ide.highlighter.JavaClassFileType;
|
||||||
|
import com.intellij.ide.highlighter.JavaFileType;
|
||||||
|
import com.intellij.lang.LanguageASTFactory;
|
||||||
import com.intellij.lang.MetaLanguage;
|
import com.intellij.lang.MetaLanguage;
|
||||||
|
import com.intellij.lang.folding.LanguageFolding;
|
||||||
|
import com.intellij.lang.java.JavaLanguage;
|
||||||
|
import com.intellij.lang.java.JavaParserDefinition;
|
||||||
|
import com.intellij.navigation.ItemPresentationProviders;
|
||||||
import com.intellij.openapi.Disposable;
|
import com.intellij.openapi.Disposable;
|
||||||
import com.intellij.openapi.extensions.Extensions;
|
import com.intellij.openapi.extensions.Extensions;
|
||||||
import com.intellij.openapi.extensions.ExtensionsArea;
|
import com.intellij.openapi.extensions.ExtensionsArea;
|
||||||
import com.intellij.openapi.fileTypes.FileTypeExtensionPoint;
|
import com.intellij.openapi.fileTypes.FileTypeExtensionPoint;
|
||||||
|
import com.intellij.openapi.fileTypes.PlainTextFileType;
|
||||||
|
import com.intellij.openapi.fileTypes.PlainTextLanguage;
|
||||||
|
import com.intellij.openapi.fileTypes.PlainTextParserDefinition;
|
||||||
|
import com.intellij.openapi.projectRoots.JavaVersionService;
|
||||||
|
import com.intellij.openapi.util.KeyWithDefaultValue;
|
||||||
import com.intellij.openapi.vfs.VirtualFileSystem;
|
import com.intellij.openapi.vfs.VirtualFileSystem;
|
||||||
import com.intellij.psi.FileContextProvider;
|
import com.intellij.psi.*;
|
||||||
import com.intellij.psi.augment.PsiAugmentProvider;
|
import com.intellij.psi.augment.PsiAugmentProvider;
|
||||||
import com.intellij.psi.augment.TypeAnnotationModifier;
|
import com.intellij.psi.augment.TypeAnnotationModifier;
|
||||||
import com.intellij.psi.compiled.ClassFileDecompilers;
|
import com.intellij.psi.compiled.ClassFileDecompilers;
|
||||||
|
import com.intellij.psi.impl.EmptySubstitutorImpl;
|
||||||
|
import com.intellij.psi.impl.LanguageConstantExpressionEvaluator;
|
||||||
|
import com.intellij.psi.impl.PsiExpressionEvaluator;
|
||||||
|
import com.intellij.psi.impl.compiled.ClassFileStubBuilder;
|
||||||
|
import com.intellij.psi.impl.file.PsiPackageImplementationHelper;
|
||||||
|
import com.intellij.psi.impl.search.MethodSuperSearcher;
|
||||||
|
import com.intellij.psi.impl.source.tree.JavaASTFactory;
|
||||||
|
import com.intellij.psi.impl.source.tree.PlainTextASTFactory;
|
||||||
import com.intellij.psi.meta.MetaDataContributor;
|
import com.intellij.psi.meta.MetaDataContributor;
|
||||||
|
import com.intellij.psi.presentation.java.*;
|
||||||
|
import com.intellij.psi.search.searches.SuperMethodsSearch;
|
||||||
import com.intellij.psi.stubs.BinaryFileStubBuilders;
|
import com.intellij.psi.stubs.BinaryFileStubBuilders;
|
||||||
|
import com.intellij.util.QueryExecutor;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.kotlin.cli.jvm.modules.CoreJrtFileSystem;
|
import org.jetbrains.kotlin.cli.jvm.modules.CoreJrtFileSystem;
|
||||||
|
|
||||||
// Mostly a placeholder for the functionality added to the bunch 193
|
import java.lang.reflect.Field;
|
||||||
public class KotlinCoreApplicationEnvironment extends JavaCoreApplicationEnvironment {
|
import java.lang.reflect.Modifier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* adapted from com.intellij.core.JavaCoreApplicationEnvironment
|
||||||
|
* TODO: initiate removal original from com.intellij.core since it seems that there are no usages left
|
||||||
|
*/
|
||||||
|
public class KotlinCoreApplicationEnvironment extends CoreApplicationEnvironment {
|
||||||
|
|
||||||
public static KotlinCoreApplicationEnvironment create(@NotNull Disposable parentDisposable, boolean unitTestMode) {
|
public static KotlinCoreApplicationEnvironment create(@NotNull Disposable parentDisposable, boolean unitTestMode) {
|
||||||
Extensions.cleanRootArea(parentDisposable);
|
|
||||||
registerExtensionPoints();
|
|
||||||
return new KotlinCoreApplicationEnvironment(parentDisposable, unitTestMode);
|
return new KotlinCoreApplicationEnvironment(parentDisposable, unitTestMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
private KotlinCoreApplicationEnvironment(@NotNull Disposable parentDisposable, boolean unitTestMode) {
|
private KotlinCoreApplicationEnvironment(@NotNull Disposable parentDisposable, boolean unitTestMode) {
|
||||||
super(parentDisposable, unitTestMode);
|
super(parentDisposable, unitTestMode);
|
||||||
|
|
||||||
|
registerExtensionPoints();
|
||||||
|
|
||||||
|
registerExtensions();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void registerExtensionPoints() {
|
private void registerExtensionPoints() {
|
||||||
ExtensionsArea area = Extensions.getRootArea();
|
ExtensionsArea area = Extensions.getRootArea();
|
||||||
|
|
||||||
CoreApplicationEnvironment.registerExtensionPoint(area, BinaryFileStubBuilders.EP_NAME, FileTypeExtensionPoint.class);
|
CoreApplicationEnvironment.registerExtensionPoint(area, BinaryFileStubBuilders.EP_NAME, FileTypeExtensionPoint.class);
|
||||||
@@ -56,9 +93,105 @@ public class KotlinCoreApplicationEnvironment extends JavaCoreApplicationEnviron
|
|||||||
IdeaExtensionPoints.INSTANCE.registerVersionSpecificAppExtensionPoints(area);
|
IdeaExtensionPoints.INSTANCE.registerVersionSpecificAppExtensionPoints(area);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void registerExtensions() {
|
||||||
|
registerFileType(JavaClassFileType.INSTANCE, "class");
|
||||||
|
registerFileType(JavaFileType.INSTANCE, "java");
|
||||||
|
registerFileType(ArchiveFileType.INSTANCE, "jar;zip");
|
||||||
|
registerFileType(PlainTextFileType.INSTANCE, "txt;sh;bat;cmd;policy;log;cgi;MF;jad;jam;htaccess");
|
||||||
|
|
||||||
|
addExplicitExtension(LanguageASTFactory.INSTANCE, PlainTextLanguage.INSTANCE, new PlainTextASTFactory());
|
||||||
|
registerParserDefinition(new PlainTextParserDefinition());
|
||||||
|
|
||||||
|
addExplicitExtension(FileTypeFileViewProviders.INSTANCE, JavaClassFileType.INSTANCE, new ClassFileViewProviderFactory());
|
||||||
|
addExplicitExtension(BinaryFileStubBuilders.INSTANCE, JavaClassFileType.INSTANCE, new ClassFileStubBuilder());
|
||||||
|
|
||||||
|
addExplicitExtension(LanguageASTFactory.INSTANCE, JavaLanguage.INSTANCE, new JavaASTFactory());
|
||||||
|
registerParserDefinition(new JavaParserDefinition());
|
||||||
|
addExplicitExtension(LanguageConstantExpressionEvaluator.INSTANCE, JavaLanguage.INSTANCE, new PsiExpressionEvaluator());
|
||||||
|
|
||||||
|
addExtension(ContainerProvider.EP_NAME, new JavaContainerProvider());
|
||||||
|
|
||||||
|
myApplication.registerService(PsiPackageImplementationHelper.class, new CorePsiPackageImplementationHelper());
|
||||||
|
|
||||||
|
EmptySubstitutorImpl emptySubstitutor = new EmptySubstitutorImpl();
|
||||||
|
myApplication.registerService(EmptySubstitutor.class, emptySubstitutor);
|
||||||
|
|
||||||
|
// Patch null values obtained because of cyclic dependency during initialization
|
||||||
|
updateInterfaceField(PsiSubstitutor.class, "EMPTY", emptySubstitutor);
|
||||||
|
updateInterfaceField(PsiSubstitutor.class, "UNKNOWN", PsiSubstitutor.EMPTY);
|
||||||
|
|
||||||
|
myApplication.registerService(JavaDirectoryService.class, createJavaDirectoryService());
|
||||||
|
myApplication.registerService(JavaVersionService.class, new JavaVersionService());
|
||||||
|
|
||||||
|
addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiPackage.class, new PackagePresentationProvider());
|
||||||
|
addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiClass.class, new ClassPresentationProvider());
|
||||||
|
addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiMethod.class, new MethodPresentationProvider());
|
||||||
|
addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiField.class, new FieldPresentationProvider());
|
||||||
|
addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiLocalVariable.class, new VariablePresentationProvider());
|
||||||
|
addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiParameter.class, new VariablePresentationProvider());
|
||||||
|
|
||||||
|
registerApplicationService(JavaCodeFoldingSettings.class, new JavaCodeFoldingSettingsBase());
|
||||||
|
addExplicitExtension(LanguageFolding.INSTANCE, JavaLanguage.INSTANCE, new JavaFoldingBuilderBase() {
|
||||||
|
@Override
|
||||||
|
protected boolean shouldShowExplicitLambdaType(@NotNull PsiAnonymousClass anonymousClass, @NotNull PsiNewExpression expression) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean isBelowRightMargin(@NotNull PsiFile file, int lineLength) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
registerApplicationExtensionPoint(SuperMethodsSearch.EP_NAME, QueryExecutor.class);
|
||||||
|
addExtension(SuperMethodsSearch.EP_NAME, new MethodSuperSearcher());
|
||||||
|
}
|
||||||
|
|
||||||
|
// overridden in upsource
|
||||||
|
protected CoreJavaDirectoryService createJavaDirectoryService() {
|
||||||
|
return new CoreJavaDirectoryService();
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
protected VirtualFileSystem createJrtFileSystem() {
|
protected VirtualFileSystem createJrtFileSystem() {
|
||||||
return new CoreJrtFileSystem();
|
return new CoreJrtFileSystem();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void updateInterfaceField(Class<?> klass, String name, Object value) {
|
||||||
|
try {
|
||||||
|
Field field = klass.getDeclaredField(name);
|
||||||
|
|
||||||
|
boolean wasAccessible = field.isAccessible();
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (!wasAccessible) {
|
||||||
|
field.setAccessible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
Field modifiersField = Field.class.getDeclaredField("modifiers");
|
||||||
|
|
||||||
|
int modifiers = field.getModifiers();
|
||||||
|
|
||||||
|
try {
|
||||||
|
modifiersField.setAccessible(true);
|
||||||
|
modifiersField.setInt(field, modifiers & ~Modifier.FINAL);
|
||||||
|
|
||||||
|
field.set(null, value);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
modifiersField.setInt(field, modifiers);
|
||||||
|
modifiersField.setAccessible(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if (!wasAccessible) {
|
||||||
|
field.setAccessible(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (NoSuchFieldException | IllegalAccessException e) {
|
||||||
|
throw new IllegalStateException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+64
@@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* 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.cli.jvm.compiler;
|
||||||
|
|
||||||
|
import com.intellij.codeInsight.ContainerProvider;
|
||||||
|
import com.intellij.codeInsight.runner.JavaMainMethodProvider;
|
||||||
|
import com.intellij.core.CoreApplicationEnvironment;
|
||||||
|
import com.intellij.core.JavaCoreApplicationEnvironment;
|
||||||
|
import com.intellij.lang.MetaLanguage;
|
||||||
|
import com.intellij.openapi.Disposable;
|
||||||
|
import com.intellij.openapi.extensions.Extensions;
|
||||||
|
import com.intellij.openapi.extensions.ExtensionsArea;
|
||||||
|
import com.intellij.openapi.fileTypes.FileTypeExtensionPoint;
|
||||||
|
import com.intellij.openapi.vfs.VirtualFileSystem;
|
||||||
|
import com.intellij.psi.FileContextProvider;
|
||||||
|
import com.intellij.psi.augment.PsiAugmentProvider;
|
||||||
|
import com.intellij.psi.augment.TypeAnnotationModifier;
|
||||||
|
import com.intellij.psi.compiled.ClassFileDecompilers;
|
||||||
|
import com.intellij.psi.meta.MetaDataContributor;
|
||||||
|
import com.intellij.psi.stubs.BinaryFileStubBuilders;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.jetbrains.kotlin.cli.jvm.modules.CoreJrtFileSystem;
|
||||||
|
|
||||||
|
// Mostly a placeholder for the functionality added to the bunch 193
|
||||||
|
public class KotlinCoreApplicationEnvironment extends JavaCoreApplicationEnvironment {
|
||||||
|
|
||||||
|
public static KotlinCoreApplicationEnvironment create(@NotNull Disposable parentDisposable, boolean unitTestMode) {
|
||||||
|
Extensions.cleanRootArea(parentDisposable);
|
||||||
|
registerExtensionPoints();
|
||||||
|
return new KotlinCoreApplicationEnvironment(parentDisposable, unitTestMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
private KotlinCoreApplicationEnvironment(@NotNull Disposable parentDisposable, boolean unitTestMode) {
|
||||||
|
super(parentDisposable, unitTestMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void registerExtensionPoints() {
|
||||||
|
ExtensionsArea area = Extensions.getRootArea();
|
||||||
|
|
||||||
|
CoreApplicationEnvironment.registerExtensionPoint(area, BinaryFileStubBuilders.EP_NAME, FileTypeExtensionPoint.class);
|
||||||
|
CoreApplicationEnvironment.registerExtensionPoint(area, FileContextProvider.EP_NAME, FileContextProvider.class);
|
||||||
|
|
||||||
|
CoreApplicationEnvironment.registerExtensionPoint(area, MetaDataContributor.EP_NAME, MetaDataContributor.class);
|
||||||
|
CoreApplicationEnvironment.registerExtensionPoint(area, PsiAugmentProvider.EP_NAME, PsiAugmentProvider.class);
|
||||||
|
CoreApplicationEnvironment.registerExtensionPoint(area, JavaMainMethodProvider.EP_NAME, JavaMainMethodProvider.class);
|
||||||
|
|
||||||
|
CoreApplicationEnvironment.registerExtensionPoint(area, ContainerProvider.EP_NAME, ContainerProvider.class);
|
||||||
|
CoreApplicationEnvironment.registerExtensionPoint(area, ClassFileDecompilers.EP_NAME, ClassFileDecompilers.Decompiler.class);
|
||||||
|
|
||||||
|
CoreApplicationEnvironment.registerExtensionPoint(area, TypeAnnotationModifier.EP_NAME, TypeAnnotationModifier.class);
|
||||||
|
CoreApplicationEnvironment.registerExtensionPoint(area, MetaLanguage.EP_NAME, MetaLanguage.class);
|
||||||
|
|
||||||
|
IdeaExtensionPoints.INSTANCE.registerVersionSpecificAppExtensionPoints(area);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
protected VirtualFileSystem createJrtFileSystem() {
|
||||||
|
return new CoreJrtFileSystem();
|
||||||
|
}
|
||||||
|
}
|
||||||
-197
@@ -1,197 +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.cli.jvm.compiler;
|
|
||||||
|
|
||||||
import com.intellij.codeInsight.ContainerProvider;
|
|
||||||
import com.intellij.codeInsight.JavaContainerProvider;
|
|
||||||
import com.intellij.codeInsight.folding.JavaCodeFoldingSettings;
|
|
||||||
import com.intellij.codeInsight.folding.impl.JavaCodeFoldingSettingsBase;
|
|
||||||
import com.intellij.codeInsight.folding.impl.JavaFoldingBuilderBase;
|
|
||||||
import com.intellij.codeInsight.runner.JavaMainMethodProvider;
|
|
||||||
import com.intellij.core.CoreApplicationEnvironment;
|
|
||||||
import com.intellij.core.CoreJavaDirectoryService;
|
|
||||||
import com.intellij.core.CorePsiPackageImplementationHelper;
|
|
||||||
import com.intellij.ide.highlighter.ArchiveFileType;
|
|
||||||
import com.intellij.ide.highlighter.JavaClassFileType;
|
|
||||||
import com.intellij.ide.highlighter.JavaFileType;
|
|
||||||
import com.intellij.lang.LanguageASTFactory;
|
|
||||||
import com.intellij.lang.MetaLanguage;
|
|
||||||
import com.intellij.lang.folding.LanguageFolding;
|
|
||||||
import com.intellij.lang.java.JavaLanguage;
|
|
||||||
import com.intellij.lang.java.JavaParserDefinition;
|
|
||||||
import com.intellij.navigation.ItemPresentationProviders;
|
|
||||||
import com.intellij.openapi.Disposable;
|
|
||||||
import com.intellij.openapi.extensions.Extensions;
|
|
||||||
import com.intellij.openapi.extensions.ExtensionsArea;
|
|
||||||
import com.intellij.openapi.fileTypes.FileTypeExtensionPoint;
|
|
||||||
import com.intellij.openapi.fileTypes.PlainTextFileType;
|
|
||||||
import com.intellij.openapi.fileTypes.PlainTextLanguage;
|
|
||||||
import com.intellij.openapi.fileTypes.PlainTextParserDefinition;
|
|
||||||
import com.intellij.openapi.projectRoots.JavaVersionService;
|
|
||||||
import com.intellij.openapi.util.KeyWithDefaultValue;
|
|
||||||
import com.intellij.openapi.vfs.VirtualFileSystem;
|
|
||||||
import com.intellij.psi.*;
|
|
||||||
import com.intellij.psi.augment.PsiAugmentProvider;
|
|
||||||
import com.intellij.psi.augment.TypeAnnotationModifier;
|
|
||||||
import com.intellij.psi.compiled.ClassFileDecompilers;
|
|
||||||
import com.intellij.psi.impl.EmptySubstitutorImpl;
|
|
||||||
import com.intellij.psi.impl.LanguageConstantExpressionEvaluator;
|
|
||||||
import com.intellij.psi.impl.PsiExpressionEvaluator;
|
|
||||||
import com.intellij.psi.impl.compiled.ClassFileStubBuilder;
|
|
||||||
import com.intellij.psi.impl.file.PsiPackageImplementationHelper;
|
|
||||||
import com.intellij.psi.impl.search.MethodSuperSearcher;
|
|
||||||
import com.intellij.psi.impl.source.tree.JavaASTFactory;
|
|
||||||
import com.intellij.psi.impl.source.tree.PlainTextASTFactory;
|
|
||||||
import com.intellij.psi.meta.MetaDataContributor;
|
|
||||||
import com.intellij.psi.presentation.java.*;
|
|
||||||
import com.intellij.psi.search.searches.SuperMethodsSearch;
|
|
||||||
import com.intellij.psi.stubs.BinaryFileStubBuilders;
|
|
||||||
import com.intellij.util.QueryExecutor;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
import org.jetbrains.kotlin.cli.jvm.modules.CoreJrtFileSystem;
|
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.lang.reflect.Modifier;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* adapted from com.intellij.core.JavaCoreApplicationEnvironment
|
|
||||||
* TODO: initiate removal original from com.intellij.core since it seems that there are no usages left
|
|
||||||
*/
|
|
||||||
public class KotlinCoreApplicationEnvironment extends CoreApplicationEnvironment {
|
|
||||||
|
|
||||||
public static KotlinCoreApplicationEnvironment create(@NotNull Disposable parentDisposable, boolean unitTestMode) {
|
|
||||||
return new KotlinCoreApplicationEnvironment(parentDisposable, unitTestMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
private KotlinCoreApplicationEnvironment(@NotNull Disposable parentDisposable, boolean unitTestMode) {
|
|
||||||
super(parentDisposable, unitTestMode);
|
|
||||||
|
|
||||||
registerExtensionPoints();
|
|
||||||
|
|
||||||
registerExtensions();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void registerExtensionPoints() {
|
|
||||||
ExtensionsArea area = Extensions.getRootArea();
|
|
||||||
|
|
||||||
CoreApplicationEnvironment.registerExtensionPoint(area, BinaryFileStubBuilders.EP_NAME, FileTypeExtensionPoint.class);
|
|
||||||
CoreApplicationEnvironment.registerExtensionPoint(area, FileContextProvider.EP_NAME, FileContextProvider.class);
|
|
||||||
|
|
||||||
CoreApplicationEnvironment.registerExtensionPoint(area, MetaDataContributor.EP_NAME, MetaDataContributor.class);
|
|
||||||
CoreApplicationEnvironment.registerExtensionPoint(area, PsiAugmentProvider.EP_NAME, PsiAugmentProvider.class);
|
|
||||||
CoreApplicationEnvironment.registerExtensionPoint(area, JavaMainMethodProvider.EP_NAME, JavaMainMethodProvider.class);
|
|
||||||
|
|
||||||
CoreApplicationEnvironment.registerExtensionPoint(area, ContainerProvider.EP_NAME, ContainerProvider.class);
|
|
||||||
CoreApplicationEnvironment.registerExtensionPoint(area, ClassFileDecompilers.EP_NAME, ClassFileDecompilers.Decompiler.class);
|
|
||||||
|
|
||||||
CoreApplicationEnvironment.registerExtensionPoint(area, TypeAnnotationModifier.EP_NAME, TypeAnnotationModifier.class);
|
|
||||||
CoreApplicationEnvironment.registerExtensionPoint(area, MetaLanguage.EP_NAME, MetaLanguage.class);
|
|
||||||
|
|
||||||
IdeaExtensionPoints.INSTANCE.registerVersionSpecificAppExtensionPoints(area);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void registerExtensions() {
|
|
||||||
registerFileType(JavaClassFileType.INSTANCE, "class");
|
|
||||||
registerFileType(JavaFileType.INSTANCE, "java");
|
|
||||||
registerFileType(ArchiveFileType.INSTANCE, "jar;zip");
|
|
||||||
registerFileType(PlainTextFileType.INSTANCE, "txt;sh;bat;cmd;policy;log;cgi;MF;jad;jam;htaccess");
|
|
||||||
|
|
||||||
addExplicitExtension(LanguageASTFactory.INSTANCE, PlainTextLanguage.INSTANCE, new PlainTextASTFactory());
|
|
||||||
registerParserDefinition(new PlainTextParserDefinition());
|
|
||||||
|
|
||||||
addExplicitExtension(FileTypeFileViewProviders.INSTANCE, JavaClassFileType.INSTANCE, new ClassFileViewProviderFactory());
|
|
||||||
addExplicitExtension(BinaryFileStubBuilders.INSTANCE, JavaClassFileType.INSTANCE, new ClassFileStubBuilder());
|
|
||||||
|
|
||||||
addExplicitExtension(LanguageASTFactory.INSTANCE, JavaLanguage.INSTANCE, new JavaASTFactory());
|
|
||||||
registerParserDefinition(new JavaParserDefinition());
|
|
||||||
addExplicitExtension(LanguageConstantExpressionEvaluator.INSTANCE, JavaLanguage.INSTANCE, new PsiExpressionEvaluator());
|
|
||||||
|
|
||||||
addExtension(ContainerProvider.EP_NAME, new JavaContainerProvider());
|
|
||||||
|
|
||||||
myApplication.registerService(PsiPackageImplementationHelper.class, new CorePsiPackageImplementationHelper());
|
|
||||||
|
|
||||||
EmptySubstitutorImpl emptySubstitutor = new EmptySubstitutorImpl();
|
|
||||||
myApplication.registerService(EmptySubstitutor.class, emptySubstitutor);
|
|
||||||
|
|
||||||
// Patch null values obtained because of cyclic dependency during initialization
|
|
||||||
updateInterfaceField(PsiSubstitutor.class, "EMPTY", emptySubstitutor);
|
|
||||||
updateInterfaceField(PsiSubstitutor.class, "UNKNOWN", PsiSubstitutor.EMPTY);
|
|
||||||
|
|
||||||
myApplication.registerService(JavaDirectoryService.class, createJavaDirectoryService());
|
|
||||||
myApplication.registerService(JavaVersionService.class, new JavaVersionService());
|
|
||||||
|
|
||||||
addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiPackage.class, new PackagePresentationProvider());
|
|
||||||
addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiClass.class, new ClassPresentationProvider());
|
|
||||||
addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiMethod.class, new MethodPresentationProvider());
|
|
||||||
addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiField.class, new FieldPresentationProvider());
|
|
||||||
addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiLocalVariable.class, new VariablePresentationProvider());
|
|
||||||
addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiParameter.class, new VariablePresentationProvider());
|
|
||||||
|
|
||||||
registerApplicationService(JavaCodeFoldingSettings.class, new JavaCodeFoldingSettingsBase());
|
|
||||||
addExplicitExtension(LanguageFolding.INSTANCE, JavaLanguage.INSTANCE, new JavaFoldingBuilderBase() {
|
|
||||||
@Override
|
|
||||||
protected boolean shouldShowExplicitLambdaType(@NotNull PsiAnonymousClass anonymousClass, @NotNull PsiNewExpression expression) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean isBelowRightMargin(@NotNull PsiFile file, int lineLength) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
registerApplicationExtensionPoint(SuperMethodsSearch.EP_NAME, QueryExecutor.class);
|
|
||||||
addExtension(SuperMethodsSearch.EP_NAME, new MethodSuperSearcher());
|
|
||||||
}
|
|
||||||
|
|
||||||
// overridden in upsource
|
|
||||||
protected CoreJavaDirectoryService createJavaDirectoryService() {
|
|
||||||
return new CoreJavaDirectoryService();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
protected VirtualFileSystem createJrtFileSystem() {
|
|
||||||
return new CoreJrtFileSystem();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void updateInterfaceField(Class<?> klass, String name, Object value) {
|
|
||||||
try {
|
|
||||||
Field field = klass.getDeclaredField(name);
|
|
||||||
|
|
||||||
boolean wasAccessible = field.isAccessible();
|
|
||||||
|
|
||||||
try {
|
|
||||||
if (!wasAccessible) {
|
|
||||||
field.setAccessible(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
Field modifiersField = Field.class.getDeclaredField("modifiers");
|
|
||||||
|
|
||||||
int modifiers = field.getModifiers();
|
|
||||||
|
|
||||||
try {
|
|
||||||
modifiersField.setAccessible(true);
|
|
||||||
modifiersField.setInt(field, modifiers & ~Modifier.FINAL);
|
|
||||||
|
|
||||||
field.set(null, value);
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
modifiersField.setInt(field, modifiers);
|
|
||||||
modifiersField.setAccessible(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
if (!wasAccessible) {
|
|
||||||
field.setAccessible(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (NoSuchFieldException | IllegalAccessException e) {
|
|
||||||
throw new IllegalStateException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+22
-8
@@ -17,6 +17,8 @@
|
|||||||
package org.jetbrains.kotlin.test.testFramework;
|
package org.jetbrains.kotlin.test.testFramework;
|
||||||
|
|
||||||
import com.intellij.core.CoreASTFactory;
|
import com.intellij.core.CoreASTFactory;
|
||||||
|
import com.intellij.ide.util.AppPropertiesComponentImpl;
|
||||||
|
import com.intellij.ide.util.PropertiesComponent;
|
||||||
import com.intellij.lang.*;
|
import com.intellij.lang.*;
|
||||||
import com.intellij.lang.impl.PsiBuilderFactoryImpl;
|
import com.intellij.lang.impl.PsiBuilderFactoryImpl;
|
||||||
import com.intellij.mock.*;
|
import com.intellij.mock.*;
|
||||||
@@ -30,6 +32,8 @@ import com.intellij.openapi.fileEditor.FileDocumentManager;
|
|||||||
import com.intellij.openapi.fileEditor.impl.LoadTextUtil;
|
import com.intellij.openapi.fileEditor.impl.LoadTextUtil;
|
||||||
import com.intellij.openapi.fileTypes.FileTypeFactory;
|
import com.intellij.openapi.fileTypes.FileTypeFactory;
|
||||||
import com.intellij.openapi.fileTypes.FileTypeManager;
|
import com.intellij.openapi.fileTypes.FileTypeManager;
|
||||||
|
import com.intellij.openapi.fileTypes.FileTypeRegistry;
|
||||||
|
import com.intellij.openapi.options.SchemeManagerFactory;
|
||||||
import com.intellij.openapi.progress.EmptyProgressIndicator;
|
import com.intellij.openapi.progress.EmptyProgressIndicator;
|
||||||
import com.intellij.openapi.progress.ProgressManager;
|
import com.intellij.openapi.progress.ProgressManager;
|
||||||
import com.intellij.openapi.progress.impl.CoreProgressManager;
|
import com.intellij.openapi.progress.impl.CoreProgressManager;
|
||||||
@@ -45,14 +49,14 @@ import com.intellij.psi.*;
|
|||||||
import com.intellij.psi.impl.*;
|
import com.intellij.psi.impl.*;
|
||||||
import com.intellij.psi.util.CachedValuesManager;
|
import com.intellij.psi.util.CachedValuesManager;
|
||||||
import com.intellij.testFramework.LightVirtualFile;
|
import com.intellij.testFramework.LightVirtualFile;
|
||||||
|
import com.intellij.testFramework.MockSchemeManagerFactory;
|
||||||
import com.intellij.testFramework.TestDataFile;
|
import com.intellij.testFramework.TestDataFile;
|
||||||
import com.intellij.util.CachedValuesManagerImpl;
|
import com.intellij.util.CachedValuesManagerImpl;
|
||||||
import com.intellij.util.Function;
|
import com.intellij.util.Function;
|
||||||
import com.intellij.util.messages.MessageBus;
|
|
||||||
import com.intellij.util.messages.MessageBusFactory;
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
import org.jetbrains.annotations.NonNls;
|
import org.jetbrains.annotations.NonNls;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.kotlin.idea.KotlinFileType;
|
||||||
import org.picocontainer.ComponentAdapter;
|
import org.picocontainer.ComponentAdapter;
|
||||||
import org.picocontainer.MutablePicoContainer;
|
import org.picocontainer.MutablePicoContainer;
|
||||||
|
|
||||||
@@ -95,21 +99,31 @@ public abstract class KtParsingTestCase extends KtPlatformLiteFixture {
|
|||||||
myPsiManager = new MockPsiManager(myProject);
|
myPsiManager = new MockPsiManager(myProject);
|
||||||
myFileFactory = new PsiFileFactoryImpl(myPsiManager);
|
myFileFactory = new PsiFileFactoryImpl(myPsiManager);
|
||||||
MutablePicoContainer appContainer = getApplication().getPicoContainer();
|
MutablePicoContainer appContainer = getApplication().getPicoContainer();
|
||||||
registerComponentInstance(appContainer, MessageBus.class, MessageBusFactory.newMessageBus(getApplication()));
|
|
||||||
final MockEditorFactory editorFactory = new MockEditorFactory();
|
final MockEditorFactory editorFactory = new MockEditorFactory();
|
||||||
registerComponentInstance(appContainer, EditorFactory.class, editorFactory);
|
MockFileTypeManager mockFileTypeManager = new MockFileTypeManager(KotlinFileType.INSTANCE);
|
||||||
registerComponentInstance(appContainer, FileDocumentManager.class, new MockFileDocumentManagerImpl(new Function<CharSequence, Document>() {
|
MockFileDocumentManagerImpl mockFileDocumentManager = new MockFileDocumentManagerImpl(new Function<CharSequence, Document>() {
|
||||||
@Override
|
@Override
|
||||||
public Document fun(CharSequence charSequence) {
|
public Document fun(CharSequence charSequence) {
|
||||||
return editorFactory.createDocument(charSequence);
|
return editorFactory.createDocument(charSequence);
|
||||||
}
|
}
|
||||||
}, HARD_REF_TO_DOCUMENT_KEY));
|
}, HARD_REF_TO_DOCUMENT_KEY);
|
||||||
registerComponentInstance(appContainer, PsiDocumentManager.class, new MockPsiDocumentManager());
|
|
||||||
|
registerApplicationService(PropertiesComponent.class, new AppPropertiesComponentImpl());
|
||||||
registerApplicationService(PsiBuilderFactory.class, new PsiBuilderFactoryImpl());
|
registerApplicationService(PsiBuilderFactory.class, new PsiBuilderFactoryImpl());
|
||||||
registerApplicationService(DefaultASTFactory.class, new CoreASTFactory());
|
registerApplicationService(DefaultASTFactory.class, new CoreASTFactory());
|
||||||
|
registerApplicationService(SchemeManagerFactory.class, new MockSchemeManagerFactory());
|
||||||
|
registerApplicationService(FileTypeManager.class, mockFileTypeManager);
|
||||||
|
registerApplicationService(FileDocumentManager.class, mockFileDocumentManager);
|
||||||
|
|
||||||
registerApplicationService(ProgressManager.class, new CoreProgressManager());
|
registerApplicationService(ProgressManager.class, new CoreProgressManager());
|
||||||
|
|
||||||
|
registerComponentInstance(appContainer, FileTypeRegistry.class, mockFileTypeManager);
|
||||||
|
registerComponentInstance(appContainer, FileTypeManager.class, mockFileTypeManager);
|
||||||
|
registerComponentInstance(appContainer, EditorFactory.class, editorFactory);
|
||||||
|
registerComponentInstance(appContainer, FileDocumentManager.class, mockFileDocumentManager);
|
||||||
|
registerComponentInstance(appContainer, PsiDocumentManager.class, new MockPsiDocumentManager());
|
||||||
|
|
||||||
|
|
||||||
myProject.registerService(CachedValuesManager.class, new CachedValuesManagerImpl(myProject, new PsiCachedValuesFactory(myPsiManager)));
|
myProject.registerService(CachedValuesManager.class, new CachedValuesManagerImpl(myProject, new PsiCachedValuesFactory(myPsiManager)));
|
||||||
myProject.registerService(PsiManager.class, myPsiManager);
|
myProject.registerService(PsiManager.class, myPsiManager);
|
||||||
|
|
||||||
@@ -323,7 +337,7 @@ public abstract class KtParsingTestCase extends KtPlatformLiteFixture {
|
|||||||
public static void ensureCorrectReparse(@NotNull PsiFile file) {
|
public static void ensureCorrectReparse(@NotNull PsiFile file) {
|
||||||
String psiToStringDefault = DebugUtil.psiToString(file, false, false);
|
String psiToStringDefault = DebugUtil.psiToString(file, false, false);
|
||||||
String fileText = file.getText();
|
String fileText = file.getText();
|
||||||
DiffLog diffLog = (new BlockSupportImpl(file.getProject())).reparseRange(
|
DiffLog diffLog = (new BlockSupportImpl()).reparseRange(
|
||||||
file, file.getNode(), TextRange.allOf(fileText), fileText, new EmptyProgressIndicator(), fileText);
|
file, file.getNode(), TextRange.allOf(fileText), fileText, new EmptyProgressIndicator(), fileText);
|
||||||
diffLog.performActualPsiChange(file);
|
diffLog.performActualPsiChange(file);
|
||||||
|
|
||||||
|
|||||||
+8
-22
@@ -17,8 +17,6 @@
|
|||||||
package org.jetbrains.kotlin.test.testFramework;
|
package org.jetbrains.kotlin.test.testFramework;
|
||||||
|
|
||||||
import com.intellij.core.CoreASTFactory;
|
import com.intellij.core.CoreASTFactory;
|
||||||
import com.intellij.ide.util.AppPropertiesComponentImpl;
|
|
||||||
import com.intellij.ide.util.PropertiesComponent;
|
|
||||||
import com.intellij.lang.*;
|
import com.intellij.lang.*;
|
||||||
import com.intellij.lang.impl.PsiBuilderFactoryImpl;
|
import com.intellij.lang.impl.PsiBuilderFactoryImpl;
|
||||||
import com.intellij.mock.*;
|
import com.intellij.mock.*;
|
||||||
@@ -32,8 +30,6 @@ import com.intellij.openapi.fileEditor.FileDocumentManager;
|
|||||||
import com.intellij.openapi.fileEditor.impl.LoadTextUtil;
|
import com.intellij.openapi.fileEditor.impl.LoadTextUtil;
|
||||||
import com.intellij.openapi.fileTypes.FileTypeFactory;
|
import com.intellij.openapi.fileTypes.FileTypeFactory;
|
||||||
import com.intellij.openapi.fileTypes.FileTypeManager;
|
import com.intellij.openapi.fileTypes.FileTypeManager;
|
||||||
import com.intellij.openapi.fileTypes.FileTypeRegistry;
|
|
||||||
import com.intellij.openapi.options.SchemeManagerFactory;
|
|
||||||
import com.intellij.openapi.progress.EmptyProgressIndicator;
|
import com.intellij.openapi.progress.EmptyProgressIndicator;
|
||||||
import com.intellij.openapi.progress.ProgressManager;
|
import com.intellij.openapi.progress.ProgressManager;
|
||||||
import com.intellij.openapi.progress.impl.CoreProgressManager;
|
import com.intellij.openapi.progress.impl.CoreProgressManager;
|
||||||
@@ -49,14 +45,14 @@ import com.intellij.psi.*;
|
|||||||
import com.intellij.psi.impl.*;
|
import com.intellij.psi.impl.*;
|
||||||
import com.intellij.psi.util.CachedValuesManager;
|
import com.intellij.psi.util.CachedValuesManager;
|
||||||
import com.intellij.testFramework.LightVirtualFile;
|
import com.intellij.testFramework.LightVirtualFile;
|
||||||
import com.intellij.testFramework.MockSchemeManagerFactory;
|
|
||||||
import com.intellij.testFramework.TestDataFile;
|
import com.intellij.testFramework.TestDataFile;
|
||||||
import com.intellij.util.CachedValuesManagerImpl;
|
import com.intellij.util.CachedValuesManagerImpl;
|
||||||
import com.intellij.util.Function;
|
import com.intellij.util.Function;
|
||||||
|
import com.intellij.util.messages.MessageBus;
|
||||||
|
import com.intellij.util.messages.MessageBusFactory;
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
import org.jetbrains.annotations.NonNls;
|
import org.jetbrains.annotations.NonNls;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.kotlin.idea.KotlinFileType;
|
|
||||||
import org.picocontainer.ComponentAdapter;
|
import org.picocontainer.ComponentAdapter;
|
||||||
import org.picocontainer.MutablePicoContainer;
|
import org.picocontainer.MutablePicoContainer;
|
||||||
|
|
||||||
@@ -99,31 +95,21 @@ public abstract class KtParsingTestCase extends KtPlatformLiteFixture {
|
|||||||
myPsiManager = new MockPsiManager(myProject);
|
myPsiManager = new MockPsiManager(myProject);
|
||||||
myFileFactory = new PsiFileFactoryImpl(myPsiManager);
|
myFileFactory = new PsiFileFactoryImpl(myPsiManager);
|
||||||
MutablePicoContainer appContainer = getApplication().getPicoContainer();
|
MutablePicoContainer appContainer = getApplication().getPicoContainer();
|
||||||
|
registerComponentInstance(appContainer, MessageBus.class, MessageBusFactory.newMessageBus(getApplication()));
|
||||||
final MockEditorFactory editorFactory = new MockEditorFactory();
|
final MockEditorFactory editorFactory = new MockEditorFactory();
|
||||||
MockFileTypeManager mockFileTypeManager = new MockFileTypeManager(KotlinFileType.INSTANCE);
|
registerComponentInstance(appContainer, EditorFactory.class, editorFactory);
|
||||||
MockFileDocumentManagerImpl mockFileDocumentManager = new MockFileDocumentManagerImpl(new Function<CharSequence, Document>() {
|
registerComponentInstance(appContainer, FileDocumentManager.class, new MockFileDocumentManagerImpl(new Function<CharSequence, Document>() {
|
||||||
@Override
|
@Override
|
||||||
public Document fun(CharSequence charSequence) {
|
public Document fun(CharSequence charSequence) {
|
||||||
return editorFactory.createDocument(charSequence);
|
return editorFactory.createDocument(charSequence);
|
||||||
}
|
}
|
||||||
}, HARD_REF_TO_DOCUMENT_KEY);
|
}, HARD_REF_TO_DOCUMENT_KEY));
|
||||||
|
registerComponentInstance(appContainer, PsiDocumentManager.class, new MockPsiDocumentManager());
|
||||||
registerApplicationService(PropertiesComponent.class, new AppPropertiesComponentImpl());
|
|
||||||
registerApplicationService(PsiBuilderFactory.class, new PsiBuilderFactoryImpl());
|
registerApplicationService(PsiBuilderFactory.class, new PsiBuilderFactoryImpl());
|
||||||
registerApplicationService(DefaultASTFactory.class, new CoreASTFactory());
|
registerApplicationService(DefaultASTFactory.class, new CoreASTFactory());
|
||||||
registerApplicationService(SchemeManagerFactory.class, new MockSchemeManagerFactory());
|
|
||||||
registerApplicationService(FileTypeManager.class, mockFileTypeManager);
|
|
||||||
registerApplicationService(FileDocumentManager.class, mockFileDocumentManager);
|
|
||||||
|
|
||||||
registerApplicationService(ProgressManager.class, new CoreProgressManager());
|
registerApplicationService(ProgressManager.class, new CoreProgressManager());
|
||||||
|
|
||||||
registerComponentInstance(appContainer, FileTypeRegistry.class, mockFileTypeManager);
|
|
||||||
registerComponentInstance(appContainer, FileTypeManager.class, mockFileTypeManager);
|
|
||||||
registerComponentInstance(appContainer, EditorFactory.class, editorFactory);
|
|
||||||
registerComponentInstance(appContainer, FileDocumentManager.class, mockFileDocumentManager);
|
|
||||||
registerComponentInstance(appContainer, PsiDocumentManager.class, new MockPsiDocumentManager());
|
|
||||||
|
|
||||||
|
|
||||||
myProject.registerService(CachedValuesManager.class, new CachedValuesManagerImpl(myProject, new PsiCachedValuesFactory(myPsiManager)));
|
myProject.registerService(CachedValuesManager.class, new CachedValuesManagerImpl(myProject, new PsiCachedValuesFactory(myPsiManager)));
|
||||||
myProject.registerService(PsiManager.class, myPsiManager);
|
myProject.registerService(PsiManager.class, myPsiManager);
|
||||||
|
|
||||||
@@ -337,7 +323,7 @@ public abstract class KtParsingTestCase extends KtPlatformLiteFixture {
|
|||||||
public static void ensureCorrectReparse(@NotNull PsiFile file) {
|
public static void ensureCorrectReparse(@NotNull PsiFile file) {
|
||||||
String psiToStringDefault = DebugUtil.psiToString(file, false, false);
|
String psiToStringDefault = DebugUtil.psiToString(file, false, false);
|
||||||
String fileText = file.getText();
|
String fileText = file.getText();
|
||||||
DiffLog diffLog = (new BlockSupportImpl()).reparseRange(
|
DiffLog diffLog = (new BlockSupportImpl(file.getProject())).reparseRange(
|
||||||
file, file.getNode(), TextRange.allOf(fileText), fileText, new EmptyProgressIndicator(), fileText);
|
file, file.getNode(), TextRange.allOf(fileText), fileText, new EmptyProgressIndicator(), fileText);
|
||||||
diffLog.performActualPsiChange(file);
|
diffLog.performActualPsiChange(file);
|
||||||
|
|
||||||
+2
-1
@@ -35,7 +35,8 @@ public abstract class KtPlatformLiteFixture extends KtUsefulTestCase {
|
|||||||
@Override
|
@Override
|
||||||
protected void setUp() throws Exception {
|
protected void setUp() throws Exception {
|
||||||
super.setUp();
|
super.setUp();
|
||||||
Extensions.cleanRootArea(getTestRootDisposable());
|
// FIXME: There is no `Extensions.cleanRootArea` in 193
|
||||||
|
// Extensions.cleanRootArea(getTestRootDisposable());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MockApplicationEx getApplication() {
|
public static MockApplicationEx getApplication() {
|
||||||
|
|||||||
+1
-2
@@ -35,8 +35,7 @@ public abstract class KtPlatformLiteFixture extends KtUsefulTestCase {
|
|||||||
@Override
|
@Override
|
||||||
protected void setUp() throws Exception {
|
protected void setUp() throws Exception {
|
||||||
super.setUp();
|
super.setUp();
|
||||||
// FIXME: There is no `Extensions.cleanRootArea` in 193
|
Extensions.cleanRootArea(getTestRootDisposable());
|
||||||
// Extensions.cleanRootArea(getTestRootDisposable());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MockApplicationEx getApplication() {
|
public static MockApplicationEx getApplication() {
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
versions.intellijSdk=192.7142.36
|
versions.intellijSdk=193.6015.22-EAP-SNAPSHOT
|
||||||
versions.androidBuildTools=r23.0.1
|
versions.androidBuildTools=r23.0.1
|
||||||
versions.idea.NodeJS=181.3494.12
|
versions.idea.NodeJS=181.3494.12
|
||||||
versions.jar.asm-all=7.0.1
|
versions.jar.asm-all=7.0.1
|
||||||
versions.jar.guava=25.1-jre
|
versions.jar.guava=27.1-jre
|
||||||
versions.jar.groovy-all=2.4.17
|
versions.jar.groovy-all=2.4.17
|
||||||
versions.jar.lombok-ast=0.2.3
|
versions.jar.lombok-ast=0.2.3
|
||||||
versions.jar.swingx-core=1.6.2-2
|
versions.jar.swingx-core=1.6.2-2
|
||||||
@@ -11,5 +11,6 @@ versions.jar.streamex=0.6.8
|
|||||||
versions.jar.gson=2.8.5
|
versions.jar.gson=2.8.5
|
||||||
versions.jar.oro=2.0.8
|
versions.jar.oro=2.0.8
|
||||||
versions.jar.picocontainer=1.2
|
versions.jar.picocontainer=1.2
|
||||||
|
versions.jar.serviceMessages=2019.1.4
|
||||||
ignore.jar.snappy-in-java=true
|
ignore.jar.snappy-in-java=true
|
||||||
versions.gradle-api=4.5.1
|
versions.gradle-api=4.5.1
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
versions.intellijSdk=193.6015.22-EAP-SNAPSHOT
|
versions.intellijSdk=192.7142.36
|
||||||
versions.androidBuildTools=r23.0.1
|
versions.androidBuildTools=r23.0.1
|
||||||
versions.idea.NodeJS=181.3494.12
|
versions.idea.NodeJS=181.3494.12
|
||||||
versions.jar.asm-all=7.0.1
|
versions.jar.asm-all=7.0.1
|
||||||
versions.jar.guava=27.1-jre
|
versions.jar.guava=25.1-jre
|
||||||
versions.jar.groovy-all=2.4.17
|
versions.jar.groovy-all=2.4.17
|
||||||
versions.jar.lombok-ast=0.2.3
|
versions.jar.lombok-ast=0.2.3
|
||||||
versions.jar.swingx-core=1.6.2-2
|
versions.jar.swingx-core=1.6.2-2
|
||||||
@@ -11,6 +11,5 @@ versions.jar.streamex=0.6.8
|
|||||||
versions.jar.gson=2.8.5
|
versions.jar.gson=2.8.5
|
||||||
versions.jar.oro=2.0.8
|
versions.jar.oro=2.0.8
|
||||||
versions.jar.picocontainer=1.2
|
versions.jar.picocontainer=1.2
|
||||||
versions.jar.serviceMessages=2019.1.4
|
|
||||||
ignore.jar.snappy-in-java=true
|
ignore.jar.snappy-in-java=true
|
||||||
versions.gradle-api=4.5.1
|
versions.gradle-api=4.5.1
|
||||||
@@ -4,8 +4,8 @@ public class Testing {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// EXIST: { lookupString: "DefaultImpls", tailText: " (defaultImpls.NonAbstractFun)" }
|
// EXIST: { lookupString: "DefaultImpls", tailText: " defaultImpls.NonAbstractFun" }
|
||||||
// EXIST: { lookupString: "DefaultImpls", tailText: " (defaultImpls.NonAbstractFunWithExpressionBody)" }
|
// EXIST: { lookupString: "DefaultImpls", tailText: " defaultImpls.NonAbstractFunWithExpressionBody" }
|
||||||
// EXIST: { lookupString: "DefaultImpls", tailText: " (defaultImpls.NonAbstractProperty)" }
|
// EXIST: { lookupString: "DefaultImpls", tailText: " defaultImpls.NonAbstractProperty" }
|
||||||
// EXIST: { lookupString: "DefaultImpls", tailText: " (defaultImpls.NonAbstractPropertyWithBody)" }
|
// EXIST: { lookupString: "DefaultImpls", tailText: " defaultImpls.NonAbstractPropertyWithBody" }
|
||||||
// ABSENT: { lookupString: "DefaultImpls", tailText: " (defaultImpls.AllAbstract)" }
|
// ABSENT: { lookupString: "DefaultImpls", tailText: " defaultImpls.AllAbstract" }
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
public class Testing {
|
||||||
|
public static void test() {
|
||||||
|
DefaultImpl<caret>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// EXIST: { lookupString: "DefaultImpls", tailText: " (defaultImpls.NonAbstractFun)" }
|
||||||
|
// EXIST: { lookupString: "DefaultImpls", tailText: " (defaultImpls.NonAbstractFunWithExpressionBody)" }
|
||||||
|
// EXIST: { lookupString: "DefaultImpls", tailText: " (defaultImpls.NonAbstractProperty)" }
|
||||||
|
// EXIST: { lookupString: "DefaultImpls", tailText: " (defaultImpls.NonAbstractPropertyWithBody)" }
|
||||||
|
// ABSENT: { lookupString: "DefaultImpls", tailText: " (defaultImpls.AllAbstract)" }
|
||||||
-11
@@ -1,11 +0,0 @@
|
|||||||
public class Testing {
|
|
||||||
public static void test() {
|
|
||||||
DefaultImpl<caret>
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// EXIST: { lookupString: "DefaultImpls", tailText: " defaultImpls.NonAbstractFun" }
|
|
||||||
// EXIST: { lookupString: "DefaultImpls", tailText: " defaultImpls.NonAbstractFunWithExpressionBody" }
|
|
||||||
// EXIST: { lookupString: "DefaultImpls", tailText: " defaultImpls.NonAbstractProperty" }
|
|
||||||
// EXIST: { lookupString: "DefaultImpls", tailText: " defaultImpls.NonAbstractPropertyWithBody" }
|
|
||||||
// ABSENT: { lookupString: "DefaultImpls", tailText: " defaultImpls.AllAbstract" }
|
|
||||||
+2
-2
@@ -5,5 +5,5 @@ public class Testing {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// EXIST: EmptyList
|
// EXIST: EmptyList
|
||||||
// EXIST: { lookupString:List,tailText:"<E> (java.util)" }
|
// EXIST: { lookupString:List,tailText:"<E> java.util" }
|
||||||
// ABSENT: { lookupString:List,tailText:"<E> (kotlin.collections)" }
|
// ABSENT: { lookupString:List,tailText:"<E> kotlin.collections" }
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
public class Testing {
|
||||||
|
public static void test() {
|
||||||
|
List<caret>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// EXIST: EmptyList
|
||||||
|
// EXIST: { lookupString:List,tailText:"<E> (java.util)" }
|
||||||
|
// ABSENT: { lookupString:List,tailText:"<E> (kotlin.collections)" }
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
public class Testing {
|
|
||||||
public static void test() {
|
|
||||||
List<caret>
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// EXIST: EmptyList
|
|
||||||
// EXIST: { lookupString:List,tailText:"<E> java.util" }
|
|
||||||
// ABSENT: { lookupString:List,tailText:"<E> kotlin.collections" }
|
|
||||||
+1
-1
@@ -27,7 +27,7 @@ abstract class AbstractKotlinSourceInJavaCompletionTest : KotlinFixtureCompletio
|
|||||||
|
|
||||||
val paths = collectPaths(mockLibDir).toTypedArray()
|
val paths = collectPaths(mockLibDir).toTypedArray()
|
||||||
paths.forEach { path ->
|
paths.forEach { path ->
|
||||||
val vFile = myFixture.copyFileToProject(path, path.substring(mockPath.length))
|
val vFile = myFixture.copyFileToProject(path.substringAfter(testDataPath), path.substring(mockPath.length))
|
||||||
myFixture.configureFromExistingVirtualFile(vFile)
|
myFixture.configureFromExistingVirtualFile(vFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -27,7 +27,7 @@ abstract class AbstractKotlinSourceInJavaCompletionTest : KotlinFixtureCompletio
|
|||||||
|
|
||||||
val paths = collectPaths(mockLibDir).toTypedArray()
|
val paths = collectPaths(mockLibDir).toTypedArray()
|
||||||
paths.forEach { path ->
|
paths.forEach { path ->
|
||||||
val vFile = myFixture.copyFileToProject(path.substringAfter(testDataPath), path.substring(mockPath.length))
|
val vFile = myFixture.copyFileToProject(path, path.substring(mockPath.length))
|
||||||
myFixture.configureFromExistingVirtualFile(vFile)
|
myFixture.configureFromExistingVirtualFile(vFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
-4
@@ -46,8 +46,6 @@ class JavaClassesInScriptDependenciesShortNameCache(private val project: Project
|
|||||||
|
|
||||||
override fun getAllMethodNames() = emptyArray<String>()
|
override fun getAllMethodNames() = emptyArray<String>()
|
||||||
|
|
||||||
override fun getAllMethodNames(set: HashSet<String>) {}
|
|
||||||
|
|
||||||
override fun getFieldsByName(name: String, scope: GlobalSearchScope) = PsiField.EMPTY_ARRAY
|
override fun getFieldsByName(name: String, scope: GlobalSearchScope) = PsiField.EMPTY_ARRAY
|
||||||
|
|
||||||
override fun getMethodsByNameIfNotMoreThan(name: String, scope: GlobalSearchScope, maxCount: Int) = PsiMethod.EMPTY_ARRAY
|
override fun getMethodsByNameIfNotMoreThan(name: String, scope: GlobalSearchScope, maxCount: Int) = PsiMethod.EMPTY_ARRAY
|
||||||
@@ -56,7 +54,5 @@ class JavaClassesInScriptDependenciesShortNameCache(private val project: Project
|
|||||||
|
|
||||||
override fun getAllFieldNames() = emptyArray<String>()
|
override fun getAllFieldNames() = emptyArray<String>()
|
||||||
|
|
||||||
override fun getAllFieldNames(set: HashSet<String>) {}
|
|
||||||
|
|
||||||
override fun getFieldsByNameIfNotMoreThan(name: String, scope: GlobalSearchScope, maxCount: Int) = PsiField.EMPTY_ARRAY
|
override fun getFieldsByNameIfNotMoreThan(name: String, scope: GlobalSearchScope, maxCount: Int) = PsiField.EMPTY_ARRAY
|
||||||
}
|
}
|
||||||
+4
@@ -46,6 +46,8 @@ class JavaClassesInScriptDependenciesShortNameCache(private val project: Project
|
|||||||
|
|
||||||
override fun getAllMethodNames() = emptyArray<String>()
|
override fun getAllMethodNames() = emptyArray<String>()
|
||||||
|
|
||||||
|
override fun getAllMethodNames(set: HashSet<String>) {}
|
||||||
|
|
||||||
override fun getFieldsByName(name: String, scope: GlobalSearchScope) = PsiField.EMPTY_ARRAY
|
override fun getFieldsByName(name: String, scope: GlobalSearchScope) = PsiField.EMPTY_ARRAY
|
||||||
|
|
||||||
override fun getMethodsByNameIfNotMoreThan(name: String, scope: GlobalSearchScope, maxCount: Int) = PsiMethod.EMPTY_ARRAY
|
override fun getMethodsByNameIfNotMoreThan(name: String, scope: GlobalSearchScope, maxCount: Int) = PsiMethod.EMPTY_ARRAY
|
||||||
@@ -54,5 +56,7 @@ class JavaClassesInScriptDependenciesShortNameCache(private val project: Project
|
|||||||
|
|
||||||
override fun getAllFieldNames() = emptyArray<String>()
|
override fun getAllFieldNames() = emptyArray<String>()
|
||||||
|
|
||||||
|
override fun getAllFieldNames(set: HashSet<String>) {}
|
||||||
|
|
||||||
override fun getFieldsByNameIfNotMoreThan(name: String, scope: GlobalSearchScope, maxCount: Int) = PsiField.EMPTY_ARRAY
|
override fun getFieldsByNameIfNotMoreThan(name: String, scope: GlobalSearchScope, maxCount: Int) = PsiField.EMPTY_ARRAY
|
||||||
}
|
}
|
||||||
@@ -7,17 +7,12 @@ package org.jetbrains.kotlin.git
|
|||||||
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.util.Couple
|
import com.intellij.openapi.util.Couple
|
||||||
import com.intellij.openapi.util.registry.Registry
|
|
||||||
import com.intellij.openapi.vcs.FilePath
|
import com.intellij.openapi.vcs.FilePath
|
||||||
import git4idea.checkin.GitCheckinExplicitMovementProvider
|
import git4idea.checkin.GitCheckinExplicitMovementProvider
|
||||||
import org.jetbrains.kotlin.idea.actions.pathBeforeJ2K
|
import org.jetbrains.kotlin.idea.actions.pathBeforeJ2K
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class KotlinExplicitMovementProvider : GitCheckinExplicitMovementProvider() {
|
class KotlinExplicitMovementProvider : GitCheckinExplicitMovementProvider() {
|
||||||
init {
|
|
||||||
Registry.get("git.explicit.commit.renames.prohibit.multiple.calls").setValue(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun isEnabled(project: Project): Boolean {
|
override fun isEnabled(project: Project): Boolean {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
+5
@@ -7,12 +7,17 @@ package org.jetbrains.kotlin.git
|
|||||||
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.util.Couple
|
import com.intellij.openapi.util.Couple
|
||||||
|
import com.intellij.openapi.util.registry.Registry
|
||||||
import com.intellij.openapi.vcs.FilePath
|
import com.intellij.openapi.vcs.FilePath
|
||||||
import git4idea.checkin.GitCheckinExplicitMovementProvider
|
import git4idea.checkin.GitCheckinExplicitMovementProvider
|
||||||
import org.jetbrains.kotlin.idea.actions.pathBeforeJ2K
|
import org.jetbrains.kotlin.idea.actions.pathBeforeJ2K
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class KotlinExplicitMovementProvider : GitCheckinExplicitMovementProvider() {
|
class KotlinExplicitMovementProvider : GitCheckinExplicitMovementProvider() {
|
||||||
|
init {
|
||||||
|
Registry.get("git.explicit.commit.renames.prohibit.multiple.calls").setValue(false)
|
||||||
|
}
|
||||||
|
|
||||||
override fun isEnabled(project: Project): Boolean {
|
override fun isEnabled(project: Project): Boolean {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@@ -26,18 +26,19 @@ class ShowKotlinGradleDslLogs : IntentionAction, AnAction(), DumbAware {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun actionPerformed(e: AnActionEvent) {
|
override fun actionPerformed(e: AnActionEvent) {
|
||||||
openLogsDirIfPresent(e.project)
|
val project = e.project ?: return
|
||||||
|
openLogsDirIfPresent(project)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun isAvailable(project: Project, editor: Editor?, file: PsiFile?) = ShowFilePathAction.isSupported()
|
override fun isAvailable(project: Project, editor: Editor?, file: PsiFile?) = ShowFilePathAction.isSupported()
|
||||||
|
|
||||||
override fun update(e: AnActionEvent) {
|
override fun update(e: AnActionEvent) {
|
||||||
val presentation = e.presentation
|
val presentation = e.presentation
|
||||||
presentation.isVisible = ShowFilePathAction.isSupported()
|
presentation.isEnabledAndVisible = e.project != null && ShowFilePathAction.isSupported()
|
||||||
presentation.text = NAME
|
presentation.text = NAME
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun openLogsDirIfPresent(project: Project?) {
|
private fun openLogsDirIfPresent(project: Project) {
|
||||||
val logsDir = findLogsDir()
|
val logsDir = findLogsDir()
|
||||||
if (logsDir != null) {
|
if (logsDir != null) {
|
||||||
ShowFilePathAction.openDirectory(logsDir)
|
ShowFilePathAction.openDirectory(logsDir)
|
||||||
|
|||||||
+3
-4
@@ -26,19 +26,18 @@ class ShowKotlinGradleDslLogs : IntentionAction, AnAction(), DumbAware {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun actionPerformed(e: AnActionEvent) {
|
override fun actionPerformed(e: AnActionEvent) {
|
||||||
val project = e.project ?: return
|
openLogsDirIfPresent(e.project)
|
||||||
openLogsDirIfPresent(project)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun isAvailable(project: Project, editor: Editor?, file: PsiFile?) = ShowFilePathAction.isSupported()
|
override fun isAvailable(project: Project, editor: Editor?, file: PsiFile?) = ShowFilePathAction.isSupported()
|
||||||
|
|
||||||
override fun update(e: AnActionEvent) {
|
override fun update(e: AnActionEvent) {
|
||||||
val presentation = e.presentation
|
val presentation = e.presentation
|
||||||
presentation.isEnabledAndVisible = e.project != null && ShowFilePathAction.isSupported()
|
presentation.isVisible = ShowFilePathAction.isSupported()
|
||||||
presentation.text = NAME
|
presentation.text = NAME
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun openLogsDirIfPresent(project: Project) {
|
private fun openLogsDirIfPresent(project: Project?) {
|
||||||
val logsDir = findLogsDir()
|
val logsDir = findLogsDir()
|
||||||
if (logsDir != null) {
|
if (logsDir != null) {
|
||||||
ShowFilePathAction.openDirectory(logsDir)
|
ShowFilePathAction.openDirectory(logsDir)
|
||||||
+17
-3
@@ -10,10 +10,8 @@ import com.intellij.ide.util.projectWizard.WizardContext
|
|||||||
import com.intellij.openapi.externalSystem.ExternalSystemModulePropertyManager
|
import com.intellij.openapi.externalSystem.ExternalSystemModulePropertyManager
|
||||||
import com.intellij.openapi.externalSystem.model.ProjectSystemId
|
import com.intellij.openapi.externalSystem.model.ProjectSystemId
|
||||||
import com.intellij.openapi.externalSystem.model.project.ModuleData
|
import com.intellij.openapi.externalSystem.model.project.ModuleData
|
||||||
import com.intellij.openapi.externalSystem.service.project.wizard.ExternalModuleSettingsStep
|
|
||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
import com.intellij.openapi.roots.ui.configuration.ModulesProvider
|
|
||||||
import com.intellij.openapi.vfs.VfsUtil
|
import com.intellij.openapi.vfs.VfsUtil
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import org.jetbrains.kotlin.idea.KotlinIcons
|
import org.jetbrains.kotlin.idea.KotlinIcons
|
||||||
@@ -23,11 +21,13 @@ import org.jetbrains.kotlin.konan.target.KonanTarget
|
|||||||
import org.jetbrains.kotlin.konan.target.TargetSupportException
|
import org.jetbrains.kotlin.konan.target.TargetSupportException
|
||||||
import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder
|
import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder
|
||||||
import org.jetbrains.plugins.gradle.service.project.wizard.GradleModuleBuilder
|
import org.jetbrains.plugins.gradle.service.project.wizard.GradleModuleBuilder
|
||||||
import org.jetbrains.plugins.gradle.service.settings.GradleProjectSettingsControl
|
|
||||||
import org.jetbrains.plugins.gradle.settings.DistributionType
|
import org.jetbrains.plugins.gradle.settings.DistributionType
|
||||||
import com.intellij.openapi.externalSystem.model.project.ProjectData
|
import com.intellij.openapi.externalSystem.model.project.ProjectData
|
||||||
|
import com.intellij.openapi.externalSystem.service.project.wizard.ExternalModuleSettingsStep
|
||||||
|
import com.intellij.openapi.roots.ui.configuration.ModulesProvider
|
||||||
import org.jetbrains.kotlin.idea.statistics.FUSEventGroups
|
import org.jetbrains.kotlin.idea.statistics.FUSEventGroups
|
||||||
import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger
|
import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger
|
||||||
|
import org.jetbrains.plugins.gradle.service.settings.GradleProjectSettingsControl
|
||||||
import javax.swing.Icon
|
import javax.swing.Icon
|
||||||
|
|
||||||
abstract class KotlinGradleAbstractMultiplatformModuleBuilder(
|
abstract class KotlinGradleAbstractMultiplatformModuleBuilder(
|
||||||
@@ -38,6 +38,20 @@ abstract class KotlinGradleAbstractMultiplatformModuleBuilder(
|
|||||||
|
|
||||||
override fun getNodeIcon(): Icon = KotlinIcons.MPP
|
override fun getNodeIcon(): Icon = KotlinIcons.MPP
|
||||||
|
|
||||||
|
/*
|
||||||
|
This overriding is a temporary workaround of a problem with how we use GradleModuleBuilder().
|
||||||
|
IDEA implies that we will create new GradleModuleBuilder every time we call Kotlin New Project Wizard.
|
||||||
|
But we create it once for every kind of GradleModuleBuilder-based New Project Wizard and the just reuse it.
|
||||||
|
How the problem looks for a user: KT-34229
|
||||||
|
Ticket that should properly fix it: KT-34591
|
||||||
|
*/
|
||||||
|
override fun cleanup() {
|
||||||
|
super.cleanup()
|
||||||
|
this.name = null
|
||||||
|
this.contentEntryPath = null
|
||||||
|
this.moduleFilePath = null
|
||||||
|
}
|
||||||
|
|
||||||
override fun createWizardSteps(wizardContext: WizardContext, modulesProvider: ModulesProvider): Array<ModuleWizardStep> {
|
override fun createWizardSteps(wizardContext: WizardContext, modulesProvider: ModulesProvider): Array<ModuleWizardStep> {
|
||||||
super.createWizardSteps(wizardContext, modulesProvider) // initializes GradleModuleBuilder.myWizardContext
|
super.createWizardSteps(wizardContext, modulesProvider) // initializes GradleModuleBuilder.myWizardContext
|
||||||
return arrayOf(
|
return arrayOf(
|
||||||
|
|||||||
+3
-17
@@ -10,8 +10,10 @@ import com.intellij.ide.util.projectWizard.WizardContext
|
|||||||
import com.intellij.openapi.externalSystem.ExternalSystemModulePropertyManager
|
import com.intellij.openapi.externalSystem.ExternalSystemModulePropertyManager
|
||||||
import com.intellij.openapi.externalSystem.model.ProjectSystemId
|
import com.intellij.openapi.externalSystem.model.ProjectSystemId
|
||||||
import com.intellij.openapi.externalSystem.model.project.ModuleData
|
import com.intellij.openapi.externalSystem.model.project.ModuleData
|
||||||
|
import com.intellij.openapi.externalSystem.service.project.wizard.ExternalModuleSettingsStep
|
||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
|
import com.intellij.openapi.roots.ui.configuration.ModulesProvider
|
||||||
import com.intellij.openapi.vfs.VfsUtil
|
import com.intellij.openapi.vfs.VfsUtil
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import org.jetbrains.kotlin.idea.KotlinIcons
|
import org.jetbrains.kotlin.idea.KotlinIcons
|
||||||
@@ -21,13 +23,11 @@ import org.jetbrains.kotlin.konan.target.KonanTarget
|
|||||||
import org.jetbrains.kotlin.konan.target.TargetSupportException
|
import org.jetbrains.kotlin.konan.target.TargetSupportException
|
||||||
import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder
|
import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder
|
||||||
import org.jetbrains.plugins.gradle.service.project.wizard.GradleModuleBuilder
|
import org.jetbrains.plugins.gradle.service.project.wizard.GradleModuleBuilder
|
||||||
|
import org.jetbrains.plugins.gradle.service.settings.GradleProjectSettingsControl
|
||||||
import org.jetbrains.plugins.gradle.settings.DistributionType
|
import org.jetbrains.plugins.gradle.settings.DistributionType
|
||||||
import com.intellij.openapi.externalSystem.model.project.ProjectData
|
import com.intellij.openapi.externalSystem.model.project.ProjectData
|
||||||
import com.intellij.openapi.externalSystem.service.project.wizard.ExternalModuleSettingsStep
|
|
||||||
import com.intellij.openapi.roots.ui.configuration.ModulesProvider
|
|
||||||
import org.jetbrains.kotlin.idea.statistics.FUSEventGroups
|
import org.jetbrains.kotlin.idea.statistics.FUSEventGroups
|
||||||
import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger
|
import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger
|
||||||
import org.jetbrains.plugins.gradle.service.settings.GradleProjectSettingsControl
|
|
||||||
import javax.swing.Icon
|
import javax.swing.Icon
|
||||||
|
|
||||||
abstract class KotlinGradleAbstractMultiplatformModuleBuilder(
|
abstract class KotlinGradleAbstractMultiplatformModuleBuilder(
|
||||||
@@ -38,20 +38,6 @@ abstract class KotlinGradleAbstractMultiplatformModuleBuilder(
|
|||||||
|
|
||||||
override fun getNodeIcon(): Icon = KotlinIcons.MPP
|
override fun getNodeIcon(): Icon = KotlinIcons.MPP
|
||||||
|
|
||||||
/*
|
|
||||||
This overriding is a temporary workaround of a problem with how we use GradleModuleBuilder().
|
|
||||||
IDEA implies that we will create new GradleModuleBuilder every time we call Kotlin New Project Wizard.
|
|
||||||
But we create it once for every kind of GradleModuleBuilder-based New Project Wizard and the just reuse it.
|
|
||||||
How the problem looks for a user: KT-34229
|
|
||||||
Ticket that should properly fix it: KT-34591
|
|
||||||
*/
|
|
||||||
override fun cleanup() {
|
|
||||||
super.cleanup()
|
|
||||||
this.name = null
|
|
||||||
this.contentEntryPath = null
|
|
||||||
this.moduleFilePath = null
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun createWizardSteps(wizardContext: WizardContext, modulesProvider: ModulesProvider): Array<ModuleWizardStep> {
|
override fun createWizardSteps(wizardContext: WizardContext, modulesProvider: ModulesProvider): Array<ModuleWizardStep> {
|
||||||
super.createWizardSteps(wizardContext, modulesProvider) // initializes GradleModuleBuilder.myWizardContext
|
super.createWizardSteps(wizardContext, modulesProvider) // initializes GradleModuleBuilder.myWizardContext
|
||||||
return arrayOf(
|
return arrayOf(
|
||||||
+7
-5
@@ -7,9 +7,11 @@ package org.jetbrains.kotlin.idea.scripting.gradle.importing
|
|||||||
|
|
||||||
import com.intellij.openapi.externalSystem.model.DataNode
|
import com.intellij.openapi.externalSystem.model.DataNode
|
||||||
import com.intellij.openapi.externalSystem.model.project.ProjectData
|
import com.intellij.openapi.externalSystem.model.project.ProjectData
|
||||||
|
import org.gradle.tooling.model.GradleProject
|
||||||
import org.gradle.tooling.model.idea.IdeaProject
|
import org.gradle.tooling.model.idea.IdeaProject
|
||||||
import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel
|
import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel
|
||||||
import org.jetbrains.kotlin.idea.scripting.gradle.kotlinDslScriptsModelImportSupported
|
import org.jetbrains.kotlin.idea.scripting.gradle.kotlinDslScriptsModelImportSupported
|
||||||
|
import org.jetbrains.plugins.gradle.model.Build
|
||||||
|
|
||||||
class KotlinDslScriptModelResolver : KotlinDslScriptModelResolverCommon() {
|
class KotlinDslScriptModelResolver : KotlinDslScriptModelResolverCommon() {
|
||||||
override fun getModelProvider() = KotlinDslScriptModelProvider()
|
override fun getModelProvider() = KotlinDslScriptModelProvider()
|
||||||
@@ -19,7 +21,7 @@ class KotlinDslScriptModelResolver : KotlinDslScriptModelResolverCommon() {
|
|||||||
super.populateProjectExtraModels(gradleProject, ideProject)
|
super.populateProjectExtraModels(gradleProject, ideProject)
|
||||||
|
|
||||||
if (kotlinDslScriptsModelImportSupported(resolverCtx.projectGradleVersion)) {
|
if (kotlinDslScriptsModelImportSupported(resolverCtx.projectGradleVersion)) {
|
||||||
populateBuildModels(gradleProject, ideProject)
|
populateBuildModels(resolverCtx.models.mainBuild, ideProject)
|
||||||
|
|
||||||
resolverCtx.models.includedBuilds.forEach { includedRoot ->
|
resolverCtx.models.includedBuilds.forEach { includedRoot ->
|
||||||
populateBuildModels(includedRoot, ideProject)
|
populateBuildModels(includedRoot, ideProject)
|
||||||
@@ -28,12 +30,12 @@ class KotlinDslScriptModelResolver : KotlinDslScriptModelResolverCommon() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun populateBuildModels(
|
private fun populateBuildModels(
|
||||||
root: IdeaProject,
|
root: Build,
|
||||||
ideProject: DataNode<ProjectData>
|
ideProject: DataNode<ProjectData>
|
||||||
) {
|
) {
|
||||||
root.modules.forEach {
|
root.projects.forEach {
|
||||||
if (it.gradleProject.parent == null) {
|
if ((it as? GradleProject)?.parent == null) {
|
||||||
resolverCtx.getExtraProject(it, KotlinDslScriptsModel::class.java)?.let { model ->
|
resolverCtx.models.getModel(it, KotlinDslScriptsModel::class.java)?.let { model ->
|
||||||
ideProject.KOTLIN_DSL_SCRIPT_MODELS.addAll(model.toListOfScriptModels())
|
ideProject.KOTLIN_DSL_SCRIPT_MODELS.addAll(model.toListOfScriptModels())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-7
@@ -7,11 +7,9 @@ package org.jetbrains.kotlin.idea.scripting.gradle.importing
|
|||||||
|
|
||||||
import com.intellij.openapi.externalSystem.model.DataNode
|
import com.intellij.openapi.externalSystem.model.DataNode
|
||||||
import com.intellij.openapi.externalSystem.model.project.ProjectData
|
import com.intellij.openapi.externalSystem.model.project.ProjectData
|
||||||
import org.gradle.tooling.model.GradleProject
|
|
||||||
import org.gradle.tooling.model.idea.IdeaProject
|
import org.gradle.tooling.model.idea.IdeaProject
|
||||||
import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel
|
import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel
|
||||||
import org.jetbrains.kotlin.idea.scripting.gradle.kotlinDslScriptsModelImportSupported
|
import org.jetbrains.kotlin.idea.scripting.gradle.kotlinDslScriptsModelImportSupported
|
||||||
import org.jetbrains.plugins.gradle.model.Build
|
|
||||||
|
|
||||||
class KotlinDslScriptModelResolver : KotlinDslScriptModelResolverCommon() {
|
class KotlinDslScriptModelResolver : KotlinDslScriptModelResolverCommon() {
|
||||||
override fun getModelProvider() = KotlinDslScriptModelProvider()
|
override fun getModelProvider() = KotlinDslScriptModelProvider()
|
||||||
@@ -21,7 +19,7 @@ class KotlinDslScriptModelResolver : KotlinDslScriptModelResolverCommon() {
|
|||||||
super.populateProjectExtraModels(gradleProject, ideProject)
|
super.populateProjectExtraModels(gradleProject, ideProject)
|
||||||
|
|
||||||
if (kotlinDslScriptsModelImportSupported(resolverCtx.projectGradleVersion)) {
|
if (kotlinDslScriptsModelImportSupported(resolverCtx.projectGradleVersion)) {
|
||||||
populateBuildModels(resolverCtx.models.mainBuild, ideProject)
|
populateBuildModels(gradleProject, ideProject)
|
||||||
|
|
||||||
resolverCtx.models.includedBuilds.forEach { includedRoot ->
|
resolverCtx.models.includedBuilds.forEach { includedRoot ->
|
||||||
populateBuildModels(includedRoot, ideProject)
|
populateBuildModels(includedRoot, ideProject)
|
||||||
@@ -30,12 +28,12 @@ class KotlinDslScriptModelResolver : KotlinDslScriptModelResolverCommon() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun populateBuildModels(
|
private fun populateBuildModels(
|
||||||
root: Build,
|
root: IdeaProject,
|
||||||
ideProject: DataNode<ProjectData>
|
ideProject: DataNode<ProjectData>
|
||||||
) {
|
) {
|
||||||
root.projects.forEach {
|
root.modules.forEach {
|
||||||
if ((it as? GradleProject)?.parent == null) {
|
if (it.gradleProject.parent == null) {
|
||||||
resolverCtx.models.getModel(it, KotlinDslScriptsModel::class.java)?.let { model ->
|
resolverCtx.getExtraProject(it, KotlinDslScriptsModel::class.java)?.let { model ->
|
||||||
ideProject.KOTLIN_DSL_SCRIPT_MODELS.addAll(model.toListOfScriptModels())
|
ideProject.KOTLIN_DSL_SCRIPT_MODELS.addAll(model.toListOfScriptModels())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -21,7 +21,10 @@ import com.intellij.openapi.actionSystem.AnActionEvent
|
|||||||
import com.intellij.openapi.keymap.KeymapManager
|
import com.intellij.openapi.keymap.KeymapManager
|
||||||
import com.intellij.openapi.keymap.KeymapUtil
|
import com.intellij.openapi.keymap.KeymapUtil
|
||||||
import com.intellij.openapi.project.DumbService
|
import com.intellij.openapi.project.DumbService
|
||||||
|
import com.intellij.task.ProjectTaskContext
|
||||||
import com.intellij.task.ProjectTaskManager
|
import com.intellij.task.ProjectTaskManager
|
||||||
|
import com.intellij.task.ProjectTaskNotification
|
||||||
|
import com.intellij.task.ProjectTaskResult
|
||||||
import org.jetbrains.kotlin.idea.KotlinBundle
|
import org.jetbrains.kotlin.idea.KotlinBundle
|
||||||
import org.jetbrains.kotlin.idea.scratch.*
|
import org.jetbrains.kotlin.idea.scratch.*
|
||||||
import org.jetbrains.kotlin.idea.scratch.printDebugMessage
|
import org.jetbrains.kotlin.idea.scratch.printDebugMessage
|
||||||
@@ -72,19 +75,21 @@ class RunScratchAction : ScratchAction(
|
|||||||
|
|
||||||
if (!isAutoRun && module != null && isMakeBeforeRun) {
|
if (!isAutoRun && module != null && isMakeBeforeRun) {
|
||||||
val project = scratchFile.project
|
val project = scratchFile.project
|
||||||
ProjectTaskManager.getInstance(project).build(arrayOf(module)) { result ->
|
ProjectTaskManager.getInstance(project).build(arrayOf(module), object : ProjectTaskNotification {
|
||||||
if (result.isAborted || result.errors > 0) {
|
override fun finished(context: ProjectTaskContext, executionResult: ProjectTaskResult) {
|
||||||
executor.errorOccurs("There were compilation errors in module ${module.name}")
|
if (executionResult.isAborted || executionResult.errors > 0) {
|
||||||
}
|
executor.errorOccurs("There were compilation errors in module ${module.name}")
|
||||||
|
}
|
||||||
|
|
||||||
if (DumbService.isDumb(project)) {
|
if (DumbService.isDumb(project)) {
|
||||||
DumbService.getInstance(project).smartInvokeLater {
|
DumbService.getInstance(project).smartInvokeLater {
|
||||||
|
executeScratch()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
executeScratch()
|
executeScratch()
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
executeScratch()
|
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
} else {
|
} else {
|
||||||
executeScratch()
|
executeScratch()
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-14
@@ -21,10 +21,7 @@ import com.intellij.openapi.actionSystem.AnActionEvent
|
|||||||
import com.intellij.openapi.keymap.KeymapManager
|
import com.intellij.openapi.keymap.KeymapManager
|
||||||
import com.intellij.openapi.keymap.KeymapUtil
|
import com.intellij.openapi.keymap.KeymapUtil
|
||||||
import com.intellij.openapi.project.DumbService
|
import com.intellij.openapi.project.DumbService
|
||||||
import com.intellij.task.ProjectTaskContext
|
|
||||||
import com.intellij.task.ProjectTaskManager
|
import com.intellij.task.ProjectTaskManager
|
||||||
import com.intellij.task.ProjectTaskNotification
|
|
||||||
import com.intellij.task.ProjectTaskResult
|
|
||||||
import org.jetbrains.kotlin.idea.KotlinBundle
|
import org.jetbrains.kotlin.idea.KotlinBundle
|
||||||
import org.jetbrains.kotlin.idea.scratch.*
|
import org.jetbrains.kotlin.idea.scratch.*
|
||||||
import org.jetbrains.kotlin.idea.scratch.printDebugMessage
|
import org.jetbrains.kotlin.idea.scratch.printDebugMessage
|
||||||
@@ -75,21 +72,19 @@ class RunScratchAction : ScratchAction(
|
|||||||
|
|
||||||
if (!isAutoRun && module != null && isMakeBeforeRun) {
|
if (!isAutoRun && module != null && isMakeBeforeRun) {
|
||||||
val project = scratchFile.project
|
val project = scratchFile.project
|
||||||
ProjectTaskManager.getInstance(project).build(arrayOf(module), object : ProjectTaskNotification {
|
ProjectTaskManager.getInstance(project).build(arrayOf(module)) { result ->
|
||||||
override fun finished(context: ProjectTaskContext, executionResult: ProjectTaskResult) {
|
if (result.isAborted || result.errors > 0) {
|
||||||
if (executionResult.isAborted || executionResult.errors > 0) {
|
executor.errorOccurs("There were compilation errors in module ${module.name}")
|
||||||
executor.errorOccurs("There were compilation errors in module ${module.name}")
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (DumbService.isDumb(project)) {
|
if (DumbService.isDumb(project)) {
|
||||||
DumbService.getInstance(project).smartInvokeLater {
|
DumbService.getInstance(project).smartInvokeLater {
|
||||||
executeScratch()
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
executeScratch()
|
executeScratch()
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
executeScratch()
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
} else {
|
} else {
|
||||||
executeScratch()
|
executeScratch()
|
||||||
}
|
}
|
||||||
@@ -22,7 +22,10 @@ import com.intellij.execution.ui.RunContentDescriptor
|
|||||||
import com.intellij.openapi.compiler.CompilerManager
|
import com.intellij.openapi.compiler.CompilerManager
|
||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
|
import com.intellij.task.ProjectTaskContext
|
||||||
import com.intellij.task.ProjectTaskManager
|
import com.intellij.task.ProjectTaskManager
|
||||||
|
import com.intellij.task.ProjectTaskNotification
|
||||||
|
import com.intellij.task.ProjectTaskResult
|
||||||
|
|
||||||
class ConsoleCompilerHelper(
|
class ConsoleCompilerHelper(
|
||||||
private val project: Project,
|
private val project: Project,
|
||||||
@@ -39,11 +42,13 @@ class ConsoleCompilerHelper(
|
|||||||
|
|
||||||
fun compileModule() {
|
fun compileModule() {
|
||||||
if (ExecutionManager.getInstance(project).contentManager.removeRunContent(executor, contentDescriptor)) {
|
if (ExecutionManager.getInstance(project).contentManager.removeRunContent(executor, contentDescriptor)) {
|
||||||
ProjectTaskManager.getInstance(project).build(arrayOf(module)) { result ->
|
ProjectTaskManager.getInstance(project).build(arrayOf(module), object : ProjectTaskNotification {
|
||||||
if (!module.isDisposed) {
|
override fun finished(context: ProjectTaskContext, executionResult: ProjectTaskResult) {
|
||||||
KotlinConsoleKeeper.getInstance(project).run(module, previousCompilationFailed = result.errors > 0)
|
if (!module.isDisposed) {
|
||||||
|
KotlinConsoleKeeper.getInstance(project).run(module, previousCompilationFailed = executionResult.errors > 0)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+4
-9
@@ -22,10 +22,7 @@ import com.intellij.execution.ui.RunContentDescriptor
|
|||||||
import com.intellij.openapi.compiler.CompilerManager
|
import com.intellij.openapi.compiler.CompilerManager
|
||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.task.ProjectTaskContext
|
|
||||||
import com.intellij.task.ProjectTaskManager
|
import com.intellij.task.ProjectTaskManager
|
||||||
import com.intellij.task.ProjectTaskNotification
|
|
||||||
import com.intellij.task.ProjectTaskResult
|
|
||||||
|
|
||||||
class ConsoleCompilerHelper(
|
class ConsoleCompilerHelper(
|
||||||
private val project: Project,
|
private val project: Project,
|
||||||
@@ -42,13 +39,11 @@ class ConsoleCompilerHelper(
|
|||||||
|
|
||||||
fun compileModule() {
|
fun compileModule() {
|
||||||
if (ExecutionManager.getInstance(project).contentManager.removeRunContent(executor, contentDescriptor)) {
|
if (ExecutionManager.getInstance(project).contentManager.removeRunContent(executor, contentDescriptor)) {
|
||||||
ProjectTaskManager.getInstance(project).build(arrayOf(module), object : ProjectTaskNotification {
|
ProjectTaskManager.getInstance(project).build(arrayOf(module)) { result ->
|
||||||
override fun finished(context: ProjectTaskContext, executionResult: ProjectTaskResult) {
|
if (!module.isDisposed) {
|
||||||
if (!module.isDisposed) {
|
KotlinConsoleKeeper.getInstance(project).run(module, previousCompilationFailed = result.errors > 0)
|
||||||
KotlinConsoleKeeper.getInstance(project).run(module, previousCompilationFailed = executionResult.errors > 0)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-4
@@ -86,9 +86,9 @@ abstract class KotlinLightCodeInsightFixtureTestCase : KotlinLightCodeInsightFix
|
|||||||
UnusedSymbolInspection()
|
UnusedSymbolInspection()
|
||||||
|
|
||||||
(StartupManager.getInstance(project) as StartupManagerImpl).runPostStartupActivities()
|
(StartupManager.getInstance(project) as StartupManagerImpl).runPostStartupActivities()
|
||||||
VfsRootAccess.allowRootAccess(KotlinTestUtils.getHomeDirectory())
|
VfsRootAccess.allowRootAccess(project, KotlinTestUtils.getHomeDirectory())
|
||||||
|
|
||||||
project.getComponent(EditorTracker::class.java)?.projectOpened()
|
EditorTracker.getInstance(project)
|
||||||
|
|
||||||
invalidateLibraryCache(project)
|
invalidateLibraryCache(project)
|
||||||
|
|
||||||
@@ -105,8 +105,6 @@ abstract class KotlinLightCodeInsightFixtureTestCase : KotlinLightCodeInsightFix
|
|||||||
override fun tearDown() {
|
override fun tearDown() {
|
||||||
LoggedErrorProcessor.restoreDefaultProcessor()
|
LoggedErrorProcessor.restoreDefaultProcessor()
|
||||||
|
|
||||||
VfsRootAccess.disallowRootAccess(KotlinTestUtils.getHomeDirectory())
|
|
||||||
|
|
||||||
super.tearDown()
|
super.tearDown()
|
||||||
|
|
||||||
if (exceptions.isNotEmpty()) {
|
if (exceptions.isNotEmpty()) {
|
||||||
|
|||||||
+4
-2
@@ -86,9 +86,9 @@ abstract class KotlinLightCodeInsightFixtureTestCase : KotlinLightCodeInsightFix
|
|||||||
UnusedSymbolInspection()
|
UnusedSymbolInspection()
|
||||||
|
|
||||||
(StartupManager.getInstance(project) as StartupManagerImpl).runPostStartupActivities()
|
(StartupManager.getInstance(project) as StartupManagerImpl).runPostStartupActivities()
|
||||||
VfsRootAccess.allowRootAccess(project, KotlinTestUtils.getHomeDirectory())
|
VfsRootAccess.allowRootAccess(KotlinTestUtils.getHomeDirectory())
|
||||||
|
|
||||||
EditorTracker.getInstance(project)
|
project.getComponent(EditorTracker::class.java)?.projectOpened()
|
||||||
|
|
||||||
invalidateLibraryCache(project)
|
invalidateLibraryCache(project)
|
||||||
|
|
||||||
@@ -105,6 +105,8 @@ abstract class KotlinLightCodeInsightFixtureTestCase : KotlinLightCodeInsightFix
|
|||||||
override fun tearDown() {
|
override fun tearDown() {
|
||||||
LoggedErrorProcessor.restoreDefaultProcessor()
|
LoggedErrorProcessor.restoreDefaultProcessor()
|
||||||
|
|
||||||
|
VfsRootAccess.disallowRootAccess(KotlinTestUtils.getHomeDirectory())
|
||||||
|
|
||||||
super.tearDown()
|
super.tearDown()
|
||||||
|
|
||||||
if (exceptions.isNotEmpty()) {
|
if (exceptions.isNotEmpty()) {
|
||||||
+5
-5
@@ -17,8 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.idea.test;
|
package org.jetbrains.kotlin.idea.test;
|
||||||
|
|
||||||
import com.intellij.openapi.module.Module;
|
import com.intellij.openapi.module.Module;
|
||||||
import com.intellij.openapi.module.ModuleType;
|
import com.intellij.openapi.module.ModuleTypeId;
|
||||||
import com.intellij.openapi.module.StdModuleTypes;
|
|
||||||
import com.intellij.openapi.projectRoots.Sdk;
|
import com.intellij.openapi.projectRoots.Sdk;
|
||||||
import com.intellij.openapi.roots.ContentEntry;
|
import com.intellij.openapi.roots.ContentEntry;
|
||||||
import com.intellij.openapi.roots.ModifiableRootModel;
|
import com.intellij.openapi.roots.ModifiableRootModel;
|
||||||
@@ -30,10 +29,11 @@ public class KotlinLightProjectDescriptor extends LightProjectDescriptor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static final KotlinLightProjectDescriptor INSTANCE = new KotlinLightProjectDescriptor();
|
public static final KotlinLightProjectDescriptor INSTANCE = new KotlinLightProjectDescriptor();
|
||||||
|
|
||||||
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public ModuleType getModuleType() {
|
public String getModuleTypeId() {
|
||||||
return StdModuleTypes.JAVA;
|
return ModuleTypeId.JAVA_MODULE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+5
-5
@@ -17,7 +17,8 @@
|
|||||||
package org.jetbrains.kotlin.idea.test;
|
package org.jetbrains.kotlin.idea.test;
|
||||||
|
|
||||||
import com.intellij.openapi.module.Module;
|
import com.intellij.openapi.module.Module;
|
||||||
import com.intellij.openapi.module.ModuleTypeId;
|
import com.intellij.openapi.module.ModuleType;
|
||||||
|
import com.intellij.openapi.module.StdModuleTypes;
|
||||||
import com.intellij.openapi.projectRoots.Sdk;
|
import com.intellij.openapi.projectRoots.Sdk;
|
||||||
import com.intellij.openapi.roots.ContentEntry;
|
import com.intellij.openapi.roots.ContentEntry;
|
||||||
import com.intellij.openapi.roots.ModifiableRootModel;
|
import com.intellij.openapi.roots.ModifiableRootModel;
|
||||||
@@ -29,11 +30,10 @@ public class KotlinLightProjectDescriptor extends LightProjectDescriptor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static final KotlinLightProjectDescriptor INSTANCE = new KotlinLightProjectDescriptor();
|
public static final KotlinLightProjectDescriptor INSTANCE = new KotlinLightProjectDescriptor();
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
@Override
|
||||||
public String getModuleTypeId() {
|
public ModuleType getModuleType() {
|
||||||
return ModuleTypeId.JAVA_MODULE;
|
return StdModuleTypes.JAVA;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
+1
-1
@@ -20,7 +20,7 @@ class CoroutineDebugConfigurationExtension : RunConfigurationExtension() {
|
|||||||
|
|
||||||
override fun <T : RunConfigurationBase<*>?> updateJavaParameters(
|
override fun <T : RunConfigurationBase<*>?> updateJavaParameters(
|
||||||
configuration: T,
|
configuration: T,
|
||||||
params: JavaParameters?,
|
params: JavaParameters,
|
||||||
runnerSettings: RunnerSettings?
|
runnerSettings: RunnerSettings?
|
||||||
) {
|
) {
|
||||||
if (runnerSettings is DebuggingRunnerData && configuration is RunConfigurationBase<*>) {
|
if (runnerSettings is DebuggingRunnerData && configuration is RunConfigurationBase<*>) {
|
||||||
|
|||||||
+1
-1
@@ -20,7 +20,7 @@ class CoroutineDebugConfigurationExtension : RunConfigurationExtension() {
|
|||||||
|
|
||||||
override fun <T : RunConfigurationBase<*>?> updateJavaParameters(
|
override fun <T : RunConfigurationBase<*>?> updateJavaParameters(
|
||||||
configuration: T,
|
configuration: T,
|
||||||
params: JavaParameters,
|
params: JavaParameters?,
|
||||||
runnerSettings: RunnerSettings?
|
runnerSettings: RunnerSettings?
|
||||||
) {
|
) {
|
||||||
if (runnerSettings is DebuggingRunnerData && configuration is RunConfigurationBase<*>) {
|
if (runnerSettings is DebuggingRunnerData && configuration is RunConfigurationBase<*>) {
|
||||||
@@ -18,10 +18,11 @@ import com.intellij.openapi.project.ex.ProjectManagerEx
|
|||||||
import com.intellij.openapi.startup.StartupManager
|
import com.intellij.openapi.startup.StartupManager
|
||||||
import com.intellij.psi.PsiDocumentManager
|
import com.intellij.psi.PsiDocumentManager
|
||||||
import com.intellij.psi.impl.PsiDocumentManagerBase
|
import com.intellij.psi.impl.PsiDocumentManagerBase
|
||||||
import com.intellij.testFramework.PlatformTestUtil
|
import com.intellij.testFramework.ExtensionTestUtil
|
||||||
import com.intellij.testFramework.runInEdtAndWait
|
import com.intellij.testFramework.runInEdtAndWait
|
||||||
import com.intellij.util.ui.UIUtil
|
import com.intellij.util.ui.UIUtil
|
||||||
import org.jetbrains.kotlin.idea.parameterInfo.HintType
|
import org.jetbrains.kotlin.idea.parameterInfo.HintType
|
||||||
|
import java.nio.file.Paths
|
||||||
import java.io.PrintWriter
|
import java.io.PrintWriter
|
||||||
import java.io.StringWriter
|
import java.io.StringWriter
|
||||||
|
|
||||||
@@ -66,7 +67,7 @@ fun dispatchAllInvocationEvents() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun loadProjectWithName(path: String, name: String): Project? =
|
fun loadProjectWithName(path: String, name: String): Project? =
|
||||||
ProjectManagerEx.getInstanceEx().loadProject(name, path)
|
ProjectManagerEx.getInstanceEx().loadProject(Paths.get(path), name)
|
||||||
|
|
||||||
fun closeProject(project: Project) {
|
fun closeProject(project: Project) {
|
||||||
dispatchAllInvocationEvents()
|
dispatchAllInvocationEvents()
|
||||||
@@ -76,7 +77,7 @@ fun closeProject(project: Project) {
|
|||||||
|
|
||||||
fun runStartupActivities(project: Project) {
|
fun runStartupActivities(project: Project) {
|
||||||
with(StartupManager.getInstance(project) as StartupManagerImpl) {
|
with(StartupManager.getInstance(project) as StartupManagerImpl) {
|
||||||
scheduleInitialVfsRefresh()
|
//scheduleInitialVfsRefresh()
|
||||||
runStartupActivities()
|
runStartupActivities()
|
||||||
runPostStartupActivities()
|
runPostStartupActivities()
|
||||||
}
|
}
|
||||||
@@ -87,7 +88,7 @@ fun waitForAllEditorsFinallyLoaded(project: Project) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun replaceWithCustomHighlighter(parentDisposable: Disposable, fromImplementationClass: String, toImplementationClass: String) {
|
fun replaceWithCustomHighlighter(parentDisposable: Disposable, fromImplementationClass: String, toImplementationClass: String) {
|
||||||
val pointName = ExtensionPointName.create<LanguageExtensionPoint<Annotator>>(LanguageAnnotators.EP_NAME)
|
val pointName = ExtensionPointName.create<LanguageExtensionPoint<Annotator>>(LanguageAnnotators.EP_NAME.name)
|
||||||
val extensionPoint = pointName.getPoint(null)
|
val extensionPoint = pointName.getPoint(null)
|
||||||
|
|
||||||
val point = LanguageExtensionPoint<Annotator>()
|
val point = LanguageExtensionPoint<Annotator>()
|
||||||
@@ -100,7 +101,7 @@ fun replaceWithCustomHighlighter(parentDisposable: Disposable, fromImplementatio
|
|||||||
.toList()
|
.toList()
|
||||||
// custom highlighter is already registered if filteredExtensions has the same size as extensions
|
// custom highlighter is already registered if filteredExtensions has the same size as extensions
|
||||||
if (filteredExtensions.size < extensions.size) {
|
if (filteredExtensions.size < extensions.size) {
|
||||||
PlatformTestUtil.maskExtensions(pointName, filteredExtensions + listOf(point), parentDisposable)
|
ExtensionTestUtil.maskExtensions(pointName, filteredExtensions + listOf(point), parentDisposable)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
-6
@@ -18,11 +18,10 @@ import com.intellij.openapi.project.ex.ProjectManagerEx
|
|||||||
import com.intellij.openapi.startup.StartupManager
|
import com.intellij.openapi.startup.StartupManager
|
||||||
import com.intellij.psi.PsiDocumentManager
|
import com.intellij.psi.PsiDocumentManager
|
||||||
import com.intellij.psi.impl.PsiDocumentManagerBase
|
import com.intellij.psi.impl.PsiDocumentManagerBase
|
||||||
import com.intellij.testFramework.ExtensionTestUtil
|
import com.intellij.testFramework.PlatformTestUtil
|
||||||
import com.intellij.testFramework.runInEdtAndWait
|
import com.intellij.testFramework.runInEdtAndWait
|
||||||
import com.intellij.util.ui.UIUtil
|
import com.intellij.util.ui.UIUtil
|
||||||
import org.jetbrains.kotlin.idea.parameterInfo.HintType
|
import org.jetbrains.kotlin.idea.parameterInfo.HintType
|
||||||
import java.nio.file.Paths
|
|
||||||
import java.io.PrintWriter
|
import java.io.PrintWriter
|
||||||
import java.io.StringWriter
|
import java.io.StringWriter
|
||||||
|
|
||||||
@@ -67,7 +66,7 @@ fun dispatchAllInvocationEvents() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun loadProjectWithName(path: String, name: String): Project? =
|
fun loadProjectWithName(path: String, name: String): Project? =
|
||||||
ProjectManagerEx.getInstanceEx().loadProject(Paths.get(path), name)
|
ProjectManagerEx.getInstanceEx().loadProject(name, path)
|
||||||
|
|
||||||
fun closeProject(project: Project) {
|
fun closeProject(project: Project) {
|
||||||
dispatchAllInvocationEvents()
|
dispatchAllInvocationEvents()
|
||||||
@@ -77,7 +76,7 @@ fun closeProject(project: Project) {
|
|||||||
|
|
||||||
fun runStartupActivities(project: Project) {
|
fun runStartupActivities(project: Project) {
|
||||||
with(StartupManager.getInstance(project) as StartupManagerImpl) {
|
with(StartupManager.getInstance(project) as StartupManagerImpl) {
|
||||||
//scheduleInitialVfsRefresh()
|
scheduleInitialVfsRefresh()
|
||||||
runStartupActivities()
|
runStartupActivities()
|
||||||
runPostStartupActivities()
|
runPostStartupActivities()
|
||||||
}
|
}
|
||||||
@@ -88,7 +87,7 @@ fun waitForAllEditorsFinallyLoaded(project: Project) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun replaceWithCustomHighlighter(parentDisposable: Disposable, fromImplementationClass: String, toImplementationClass: String) {
|
fun replaceWithCustomHighlighter(parentDisposable: Disposable, fromImplementationClass: String, toImplementationClass: String) {
|
||||||
val pointName = ExtensionPointName.create<LanguageExtensionPoint<Annotator>>(LanguageAnnotators.EP_NAME.name)
|
val pointName = ExtensionPointName.create<LanguageExtensionPoint<Annotator>>(LanguageAnnotators.EP_NAME)
|
||||||
val extensionPoint = pointName.getPoint(null)
|
val extensionPoint = pointName.getPoint(null)
|
||||||
|
|
||||||
val point = LanguageExtensionPoint<Annotator>()
|
val point = LanguageExtensionPoint<Annotator>()
|
||||||
@@ -101,7 +100,7 @@ fun replaceWithCustomHighlighter(parentDisposable: Disposable, fromImplementatio
|
|||||||
.toList()
|
.toList()
|
||||||
// custom highlighter is already registered if filteredExtensions has the same size as extensions
|
// custom highlighter is already registered if filteredExtensions has the same size as extensions
|
||||||
if (filteredExtensions.size < extensions.size) {
|
if (filteredExtensions.size < extensions.size) {
|
||||||
ExtensionTestUtil.maskExtensions(pointName, filteredExtensions + listOf(point), parentDisposable)
|
PlatformTestUtil.maskExtensions(pointName, filteredExtensions + listOf(point), parentDisposable)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -13,13 +13,13 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
|||||||
<version>@snapshot@</version>
|
<version>@snapshot@</version>
|
||||||
<vendor url="http://www.jetbrains.com">JetBrains</vendor>
|
<vendor url="http://www.jetbrains.com">JetBrains</vendor>
|
||||||
|
|
||||||
<idea-version since-build="192.7142.36" until-build="192.*"/>
|
<idea-version since-build="193.4099.13" until-build="201.*"/>
|
||||||
|
|
||||||
<depends>com.intellij.modules.platform</depends>
|
<depends>com.intellij.modules.platform</depends>
|
||||||
|
|
||||||
<depends optional="true" config-file="junit.xml">JUnit</depends>
|
<depends optional="true" config-file="junit.xml">JUnit</depends>
|
||||||
<depends optional="true" config-file="gradle.xml">org.jetbrains.plugins.gradle</depends>
|
<depends optional="true" config-file="gradle.xml">com.intellij.gradle</depends>
|
||||||
<depends optional="true" config-file="gradle-java.xml">org.jetbrains.plugins.gradle.java</depends>
|
<depends optional="true" config-file="gradle-java.xml">org.jetbrains.plugins.gradle</depends>
|
||||||
<depends optional="true" config-file="gradle-groovy.xml">org.intellij.groovy</depends>
|
<depends optional="true" config-file="gradle-groovy.xml">org.intellij.groovy</depends>
|
||||||
<depends optional="true" config-file="maven.xml">org.jetbrains.idea.maven</depends>
|
<depends optional="true" config-file="maven.xml">org.jetbrains.idea.maven</depends>
|
||||||
<depends optional="true" config-file="testng-j.xml">TestNG-J</depends>
|
<depends optional="true" config-file="testng-j.xml">TestNG-J</depends>
|
||||||
@@ -82,10 +82,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
|||||||
<statistics.projectUsagesCollector implementation="org.jetbrains.kotlin.idea.statistics.ProjectConfigurationCollector"/>
|
<statistics.projectUsagesCollector implementation="org.jetbrains.kotlin.idea.statistics.ProjectConfigurationCollector"/>
|
||||||
|
|
||||||
<fileTypeUsageSchemaDescriptor schema="Gradle Script" implementationClass="org.jetbrains.kotlin.idea.core.script.KotlinGradleScriptFileTypeSchemaDetector"/>
|
<fileTypeUsageSchemaDescriptor schema="Gradle Script" implementationClass="org.jetbrains.kotlin.idea.core.script.KotlinGradleScriptFileTypeSchemaDetector"/>
|
||||||
|
|
||||||
|
<completion.ml.model implementation="org.jetbrains.kotlin.idea.completion.ml.KotlinMLRankingProvider"/>
|
||||||
</extensions>
|
</extensions>
|
||||||
|
|
||||||
<extensions defaultExtensionNs="com.intellij">
|
|
||||||
<focusModeProvider language="kotlin" implementationClass="org.jetbrains.kotlin.idea.core.KotlinFocusModeProvider" />
|
|
||||||
</extensions>
|
|
||||||
|
|
||||||
</idea-plugin>
|
</idea-plugin>
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
|||||||
<version>@snapshot@</version>
|
<version>@snapshot@</version>
|
||||||
<vendor url="http://www.jetbrains.com">JetBrains</vendor>
|
<vendor url="http://www.jetbrains.com">JetBrains</vendor>
|
||||||
|
|
||||||
<idea-version since-build="193.4099.13" until-build="201.*"/>
|
<idea-version since-build="192.7142.36" until-build="192.*"/>
|
||||||
|
|
||||||
<depends>com.intellij.modules.platform</depends>
|
<depends>com.intellij.modules.platform</depends>
|
||||||
|
|
||||||
<depends optional="true" config-file="junit.xml">JUnit</depends>
|
<depends optional="true" config-file="junit.xml">JUnit</depends>
|
||||||
<depends optional="true" config-file="gradle.xml">com.intellij.gradle</depends>
|
<depends optional="true" config-file="gradle.xml">org.jetbrains.plugins.gradle</depends>
|
||||||
<depends optional="true" config-file="gradle-java.xml">org.jetbrains.plugins.gradle</depends>
|
<depends optional="true" config-file="gradle-java.xml">org.jetbrains.plugins.gradle.java</depends>
|
||||||
<depends optional="true" config-file="gradle-groovy.xml">org.intellij.groovy</depends>
|
<depends optional="true" config-file="gradle-groovy.xml">org.intellij.groovy</depends>
|
||||||
<depends optional="true" config-file="maven.xml">org.jetbrains.idea.maven</depends>
|
<depends optional="true" config-file="maven.xml">org.jetbrains.idea.maven</depends>
|
||||||
<depends optional="true" config-file="testng-j.xml">TestNG-J</depends>
|
<depends optional="true" config-file="testng-j.xml">TestNG-J</depends>
|
||||||
@@ -82,7 +82,10 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
|||||||
<statistics.projectUsagesCollector implementation="org.jetbrains.kotlin.idea.statistics.ProjectConfigurationCollector"/>
|
<statistics.projectUsagesCollector implementation="org.jetbrains.kotlin.idea.statistics.ProjectConfigurationCollector"/>
|
||||||
|
|
||||||
<fileTypeUsageSchemaDescriptor schema="Gradle Script" implementationClass="org.jetbrains.kotlin.idea.core.script.KotlinGradleScriptFileTypeSchemaDetector"/>
|
<fileTypeUsageSchemaDescriptor schema="Gradle Script" implementationClass="org.jetbrains.kotlin.idea.core.script.KotlinGradleScriptFileTypeSchemaDetector"/>
|
||||||
|
|
||||||
<completion.ml.model implementation="org.jetbrains.kotlin.idea.completion.ml.KotlinMLRankingProvider"/>
|
|
||||||
</extensions>
|
</extensions>
|
||||||
|
|
||||||
|
<extensions defaultExtensionNs="com.intellij">
|
||||||
|
<focusModeProvider language="kotlin" implementationClass="org.jetbrains.kotlin.idea.core.KotlinFocusModeProvider" />
|
||||||
|
</extensions>
|
||||||
|
|
||||||
</idea-plugin>
|
</idea-plugin>
|
||||||
+1
-3
@@ -83,9 +83,7 @@ abstract class AbstractCompletionBenchmarkAction : AnAction() {
|
|||||||
generateSequence { this.randomElement(random) }.distinct()
|
generateSequence { this.randomElement(random) }.distinct()
|
||||||
|
|
||||||
internal fun collectSuitableKotlinFiles(project: Project, filePredicate: (KtFile) -> Boolean): MutableList<KtFile> {
|
internal fun collectSuitableKotlinFiles(project: Project, filePredicate: (KtFile) -> Boolean): MutableList<KtFile> {
|
||||||
val scope = object : DelegatingGlobalSearchScope(GlobalSearchScope.allScope(project)) {
|
val scope = GlobalSearchScope.allScope(project)
|
||||||
override fun isSearchOutsideRootModel(): Boolean = false
|
|
||||||
}
|
|
||||||
|
|
||||||
fun KtFile.isUsableForBenchmark(): Boolean {
|
fun KtFile.isUsableForBenchmark(): Boolean {
|
||||||
val moduleInfo = this.getNullableModuleInfo() ?: return false
|
val moduleInfo = this.getNullableModuleInfo() ?: return false
|
||||||
|
|||||||
+3
-1
@@ -83,7 +83,9 @@ abstract class AbstractCompletionBenchmarkAction : AnAction() {
|
|||||||
generateSequence { this.randomElement(random) }.distinct()
|
generateSequence { this.randomElement(random) }.distinct()
|
||||||
|
|
||||||
internal fun collectSuitableKotlinFiles(project: Project, filePredicate: (KtFile) -> Boolean): MutableList<KtFile> {
|
internal fun collectSuitableKotlinFiles(project: Project, filePredicate: (KtFile) -> Boolean): MutableList<KtFile> {
|
||||||
val scope = GlobalSearchScope.allScope(project)
|
val scope = object : DelegatingGlobalSearchScope(GlobalSearchScope.allScope(project)) {
|
||||||
|
override fun isSearchOutsideRootModel(): Boolean = false
|
||||||
|
}
|
||||||
|
|
||||||
fun KtFile.isUsableForBenchmark(): Boolean {
|
fun KtFile.isUsableForBenchmark(): Boolean {
|
||||||
val moduleInfo = this.getNullableModuleInfo() ?: return false
|
val moduleInfo = this.getNullableModuleInfo() ?: return false
|
||||||
@@ -5,8 +5,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.migration
|
package org.jetbrains.kotlin.idea.migration
|
||||||
|
|
||||||
import com.intellij.codeInspection.InspectionEP
|
|
||||||
import com.intellij.codeInspection.InspectionProfileEntry
|
|
||||||
import com.intellij.codeInspection.ex.InspectionManagerEx
|
import com.intellij.codeInspection.ex.InspectionManagerEx
|
||||||
import com.intellij.codeInspection.ex.InspectionProfileImpl
|
import com.intellij.codeInspection.ex.InspectionProfileImpl
|
||||||
import com.intellij.codeInspection.ex.InspectionToolWrapper
|
import com.intellij.codeInspection.ex.InspectionToolWrapper
|
||||||
@@ -56,7 +54,7 @@ fun createMigrationProfile(
|
|||||||
|
|
||||||
fun applicableMigrationTools(migrationInfo: MigrationInfo) = applicableMigrationToolsImpl(migrationInfo)
|
fun applicableMigrationTools(migrationInfo: MigrationInfo) = applicableMigrationToolsImpl(migrationInfo)
|
||||||
|
|
||||||
private fun applicableMigrationToolsImpl(migrationInfo: MigrationInfo?): List<InspectionToolWrapper<InspectionProfileEntry, InspectionEP>> {
|
private fun applicableMigrationToolsImpl(migrationInfo: MigrationInfo?): List<InspectionToolWrapper<*, *>> {
|
||||||
val rootProfile = InspectionProfileManager.getInstance().currentProfile
|
val rootProfile = InspectionProfileManager.getInstance().currentProfile
|
||||||
|
|
||||||
return rootProfile.allTools.asSequence()
|
return rootProfile.allTools.asSequence()
|
||||||
|
|||||||
+3
-1
@@ -5,6 +5,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.migration
|
package org.jetbrains.kotlin.idea.migration
|
||||||
|
|
||||||
|
import com.intellij.codeInspection.InspectionEP
|
||||||
|
import com.intellij.codeInspection.InspectionProfileEntry
|
||||||
import com.intellij.codeInspection.ex.InspectionManagerEx
|
import com.intellij.codeInspection.ex.InspectionManagerEx
|
||||||
import com.intellij.codeInspection.ex.InspectionProfileImpl
|
import com.intellij.codeInspection.ex.InspectionProfileImpl
|
||||||
import com.intellij.codeInspection.ex.InspectionToolWrapper
|
import com.intellij.codeInspection.ex.InspectionToolWrapper
|
||||||
@@ -54,7 +56,7 @@ fun createMigrationProfile(
|
|||||||
|
|
||||||
fun applicableMigrationTools(migrationInfo: MigrationInfo) = applicableMigrationToolsImpl(migrationInfo)
|
fun applicableMigrationTools(migrationInfo: MigrationInfo) = applicableMigrationToolsImpl(migrationInfo)
|
||||||
|
|
||||||
private fun applicableMigrationToolsImpl(migrationInfo: MigrationInfo?): List<InspectionToolWrapper<*, *>> {
|
private fun applicableMigrationToolsImpl(migrationInfo: MigrationInfo?): List<InspectionToolWrapper<InspectionProfileEntry, InspectionEP>> {
|
||||||
val rootProfile = InspectionProfileManager.getInstance().currentProfile
|
val rootProfile = InspectionProfileManager.getInstance().currentProfile
|
||||||
|
|
||||||
return rootProfile.allTools.asSequence()
|
return rootProfile.allTools.asSequence()
|
||||||
@@ -41,7 +41,6 @@ import com.intellij.refactoring.BaseRefactoringProcessor.ConflictsInTestsExcepti
|
|||||||
import com.intellij.refactoring.changeSignature.ChangeSignatureUtil
|
import com.intellij.refactoring.changeSignature.ChangeSignatureUtil
|
||||||
import com.intellij.refactoring.listeners.RefactoringEventData
|
import com.intellij.refactoring.listeners.RefactoringEventData
|
||||||
import com.intellij.refactoring.listeners.RefactoringEventListener
|
import com.intellij.refactoring.listeners.RefactoringEventListener
|
||||||
import com.intellij.refactoring.rename.PsiElementRenameHandler
|
|
||||||
import com.intellij.refactoring.ui.ConflictsDialog
|
import com.intellij.refactoring.ui.ConflictsDialog
|
||||||
import com.intellij.refactoring.util.ConflictsUtil
|
import com.intellij.refactoring.util.ConflictsUtil
|
||||||
import com.intellij.refactoring.util.RefactoringUIUtil
|
import com.intellij.refactoring.util.RefactoringUIUtil
|
||||||
@@ -485,7 +484,7 @@ private fun <T> copyTypeParameters(
|
|||||||
inserter(to, factory.createTypeParameterList())
|
inserter(to, factory.createTypeParameterList())
|
||||||
val targetTypeParamList = to.typeParameterList
|
val targetTypeParamList = to.typeParameterList
|
||||||
val newTypeParams = templateTypeParams.map {
|
val newTypeParams = templateTypeParams.map {
|
||||||
factory.createTypeParameter(it.name, it.extendsList.referencedTypes)
|
factory.createTypeParameter(it.name!!, it.extendsList.referencedTypes)
|
||||||
}
|
}
|
||||||
ChangeSignatureUtil.synchronizeList(
|
ChangeSignatureUtil.synchronizeList(
|
||||||
targetTypeParamList,
|
targetTypeParamList,
|
||||||
@@ -960,20 +959,17 @@ fun checkSuperMethodsWithPopup(
|
|||||||
append(" of ")
|
append(" of ")
|
||||||
append(SymbolPresentationUtil.getSymbolPresentableText(superClass))
|
append(SymbolPresentationUtil.getSymbolPresentableText(superClass))
|
||||||
}
|
}
|
||||||
|
val list = JBList<String>(renameBase, renameCurrent)
|
||||||
JBPopupFactory.getInstance()
|
JBPopupFactory.getInstance()
|
||||||
.createPopupChooserBuilder(listOf(renameBase, renameCurrent))
|
.createListPopupBuilder(list)
|
||||||
.setTitle(title)
|
.setTitle(title)
|
||||||
.setMovable(false)
|
.setMovable(false)
|
||||||
.setResizable(false)
|
.setResizable(false)
|
||||||
.setRequestFocus(true)
|
.setRequestFocus(true)
|
||||||
.setItemChosenCallback { selected ->
|
.setItemChoosenCallback {
|
||||||
if (selected == renameBase) {
|
val value = list.selectedValue ?: return@setItemChoosenCallback
|
||||||
val ableToRename = declaration.project.let { project ->
|
val chosenElements = if (value == renameBase) deepestSuperMethods + declaration else listOf(declaration)
|
||||||
deepestSuperMethods.all { PsiElementRenameHandler.canRename(project, editor, it) }
|
action(chosenElements)
|
||||||
}
|
|
||||||
if (ableToRename) action(deepestSuperMethods + declaration)
|
|
||||||
} else action(listOf(declaration))
|
|
||||||
}
|
}
|
||||||
.createPopup()
|
.createPopup()
|
||||||
.showInBestPositionFor(editor)
|
.showInBestPositionFor(editor)
|
||||||
|
|||||||
+11
-7
@@ -41,6 +41,7 @@ import com.intellij.refactoring.BaseRefactoringProcessor.ConflictsInTestsExcepti
|
|||||||
import com.intellij.refactoring.changeSignature.ChangeSignatureUtil
|
import com.intellij.refactoring.changeSignature.ChangeSignatureUtil
|
||||||
import com.intellij.refactoring.listeners.RefactoringEventData
|
import com.intellij.refactoring.listeners.RefactoringEventData
|
||||||
import com.intellij.refactoring.listeners.RefactoringEventListener
|
import com.intellij.refactoring.listeners.RefactoringEventListener
|
||||||
|
import com.intellij.refactoring.rename.PsiElementRenameHandler
|
||||||
import com.intellij.refactoring.ui.ConflictsDialog
|
import com.intellij.refactoring.ui.ConflictsDialog
|
||||||
import com.intellij.refactoring.util.ConflictsUtil
|
import com.intellij.refactoring.util.ConflictsUtil
|
||||||
import com.intellij.refactoring.util.RefactoringUIUtil
|
import com.intellij.refactoring.util.RefactoringUIUtil
|
||||||
@@ -484,7 +485,7 @@ private fun <T> copyTypeParameters(
|
|||||||
inserter(to, factory.createTypeParameterList())
|
inserter(to, factory.createTypeParameterList())
|
||||||
val targetTypeParamList = to.typeParameterList
|
val targetTypeParamList = to.typeParameterList
|
||||||
val newTypeParams = templateTypeParams.map {
|
val newTypeParams = templateTypeParams.map {
|
||||||
factory.createTypeParameter(it.name!!, it.extendsList.referencedTypes)
|
factory.createTypeParameter(it.name, it.extendsList.referencedTypes)
|
||||||
}
|
}
|
||||||
ChangeSignatureUtil.synchronizeList(
|
ChangeSignatureUtil.synchronizeList(
|
||||||
targetTypeParamList,
|
targetTypeParamList,
|
||||||
@@ -959,17 +960,20 @@ fun checkSuperMethodsWithPopup(
|
|||||||
append(" of ")
|
append(" of ")
|
||||||
append(SymbolPresentationUtil.getSymbolPresentableText(superClass))
|
append(SymbolPresentationUtil.getSymbolPresentableText(superClass))
|
||||||
}
|
}
|
||||||
val list = JBList<String>(renameBase, renameCurrent)
|
|
||||||
JBPopupFactory.getInstance()
|
JBPopupFactory.getInstance()
|
||||||
.createListPopupBuilder(list)
|
.createPopupChooserBuilder(listOf(renameBase, renameCurrent))
|
||||||
.setTitle(title)
|
.setTitle(title)
|
||||||
.setMovable(false)
|
.setMovable(false)
|
||||||
.setResizable(false)
|
.setResizable(false)
|
||||||
.setRequestFocus(true)
|
.setRequestFocus(true)
|
||||||
.setItemChoosenCallback {
|
.setItemChosenCallback { selected ->
|
||||||
val value = list.selectedValue ?: return@setItemChoosenCallback
|
if (selected == renameBase) {
|
||||||
val chosenElements = if (value == renameBase) deepestSuperMethods + declaration else listOf(declaration)
|
val ableToRename = declaration.project.let { project ->
|
||||||
action(chosenElements)
|
deepestSuperMethods.all { PsiElementRenameHandler.canRename(project, editor, it) }
|
||||||
|
}
|
||||||
|
if (ableToRename) action(deepestSuperMethods + declaration)
|
||||||
|
} else action(listOf(declaration))
|
||||||
}
|
}
|
||||||
.createPopup()
|
.createPopup()
|
||||||
.showInBestPositionFor(editor)
|
.showInBestPositionFor(editor)
|
||||||
@@ -10,5 +10,5 @@ import java.util.concurrent.Future
|
|||||||
object ProgressIndicatorUtils {
|
object ProgressIndicatorUtils {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun <T> awaitWithCheckCanceled(future: Future<T>) =
|
fun <T> awaitWithCheckCanceled(future: Future<T>) =
|
||||||
com.intellij.openapi.progress.util.BackgroundTaskUtil.awaitWithCheckCanceled(future)
|
com.intellij.openapi.progress.util.ProgressIndicatorUtils.awaitWithCheckCanceled(future)
|
||||||
}
|
}
|
||||||
+1
-1
@@ -10,5 +10,5 @@ import java.util.concurrent.Future
|
|||||||
object ProgressIndicatorUtils {
|
object ProgressIndicatorUtils {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun <T> awaitWithCheckCanceled(future: Future<T>) =
|
fun <T> awaitWithCheckCanceled(future: Future<T>) =
|
||||||
com.intellij.openapi.progress.util.ProgressIndicatorUtils.awaitWithCheckCanceled(future)
|
com.intellij.openapi.progress.util.BackgroundTaskUtil.awaitWithCheckCanceled(future)
|
||||||
}
|
}
|
||||||
Vendored
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user