diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CoreExternalAnnotationsManager.java b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CoreExternalAnnotationsManager.java deleted file mode 100644 index 334cbc18f89..00000000000 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CoreExternalAnnotationsManager.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.cli.jvm.compiler; - -import com.intellij.codeInsight.BaseExternalAnnotationsManager; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.*; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.ArrayList; -import java.util.List; - -public class CoreExternalAnnotationsManager extends BaseExternalAnnotationsManager { - static { - // This is an ugly workaround for JDOM 1.1 used from application started from Ant 1.8 without forking - System.setProperty("javax.xml.parsers.SAXParserFactory", "com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl"); - } - - private final List externalAnnotationsRoots = new ArrayList(); - - public CoreExternalAnnotationsManager(@NotNull PsiManager psiManager) { - super(psiManager); - } - - public void addExternalAnnotationsRoot(VirtualFile externalAnnotationsRoot) { - externalAnnotationsRoots.add(externalAnnotationsRoot); - } - - @Override - protected boolean hasAnyAnnotationsRoots() { - return true; - } - - @NotNull - @Override - protected List getExternalAnnotationsRoots(@NotNull VirtualFile libraryFile) { - return externalAnnotationsRoots; - } - - @Override - public void annotateExternally(@NotNull PsiModifierListOwner listOwner, @NotNull String annotationFQName, @NotNull PsiFile fromFile, - PsiNameValuePair[] value) { - throw new UnsupportedOperationException(); - } - - @Override - public boolean deannotate(@NotNull PsiModifierListOwner listOwner, @NotNull String annotationFQN) { - throw new UnsupportedOperationException(); - } - - @Override - public boolean editExternalAnnotation(@NotNull PsiModifierListOwner listOwner, @NotNull String annotationFQN, - @Nullable PsiNameValuePair[] value) { - throw new UnsupportedOperationException(); - } - - @Override - public AnnotationPlace chooseAnnotationsPlace(@NotNull PsiElement element) { - throw new UnsupportedOperationException(); - } -} diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt index 9c3447b0b99..5c5e91ecf43 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.cli.jvm.compiler import com.google.common.collect.Sets import com.intellij.codeInsight.ContainerProvider -import com.intellij.codeInsight.ExternalAnnotationsManager import com.intellij.codeInsight.runner.JavaMainMethodProvider import com.intellij.core.CoreApplicationEnvironment import com.intellij.core.CoreJavaFileManager @@ -39,7 +38,6 @@ import com.intellij.openapi.util.text.StringUtil import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.FileContextProvider import com.intellij.psi.PsiElementFinder -import com.intellij.psi.PsiManager import com.intellij.psi.augment.PsiAugmentProvider import com.intellij.psi.compiled.ClassFileDecompilers import com.intellij.psi.impl.JavaClassSupersImpl @@ -102,8 +100,6 @@ public class KotlinCoreEnvironment private constructor( private val sourceFiles = ArrayList() private val javaRoots = ArrayList() - private val annotationsManager: CoreExternalAnnotationsManager - public val configuration: CompilerConfiguration = configuration.copy().let { it.setReadOnly(true) it @@ -111,8 +107,6 @@ public class KotlinCoreEnvironment private constructor( init { val project = projectEnvironment.getProject() - annotationsManager = CoreExternalAnnotationsManager(project.getComponent(javaClass())!!) - project.registerService(javaClass(), annotationsManager) project.registerService(javaClass(), CliDeclarationProviderFactoryService(sourceFiles)) project.registerService(ModuleVisibilityManager::class.java, CliModuleVisibilityManagerImpl()) @@ -124,9 +118,6 @@ public class KotlinCoreEnvironment private constructor( val index = JvmDependenciesIndex(javaRoots) (fileManager as KotlinCliJavaFileManagerImpl).initIndex(index) - for (path in configuration.getList(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY)) { - addExternalAnnotationsRoot(path) - } sourceFiles.addAll(CompileEnvironmentUtil.getJetFiles(project, getSourceRootsCheckingForDuplicates(), { message -> report(ERROR, message) @@ -169,14 +160,6 @@ public class KotlinCoreEnvironment private constructor( StringUtil.getLineBreakCount(it.getText()) + (if (StringUtil.endsWithLineBreak(text)) 0 else 1) } - private fun addExternalAnnotationsRoot(path: File) { - if (!path.exists()) { - report(WARNING, "Annotations path entry points to a non-existent location: " + path) - return - } - annotationsManager.addExternalAnnotationsRoot(PathUtil.jarFileOrDirectoryToVirtualFile(path)) - } - private fun fillClasspath(configuration: CompilerConfiguration) { for (root in configuration.getList(CommonConfigurationKeys.CONTENT_ROOTS)) { val javaRoot = root as? JvmContentRoot ?: continue diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/config/JVMConfigurationKeys.java b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/config/JVMConfigurationKeys.java index c47df29e0d9..ad5c4e61b5a 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/config/JVMConfigurationKeys.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/config/JVMConfigurationKeys.java @@ -22,16 +22,12 @@ import org.jetbrains.kotlin.config.CompilerConfigurationKey; import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents; import org.jetbrains.kotlin.resolve.AnalyzerScriptParameter; -import java.io.File; import java.util.List; public class JVMConfigurationKeys { private JVMConfigurationKeys() { } - public static final CompilerConfigurationKey> ANNOTATIONS_PATH_KEY = - CompilerConfigurationKey.create("external annotations path"); - public static final CompilerConfigurationKey> SCRIPT_PARAMETERS = CompilerConfigurationKey.create("script"); diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/components/TraceBasedExternalSignatureResolver.java b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/components/TraceBasedExternalSignatureResolver.java index 3cf5f75eb89..20ffa11f10a 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/components/TraceBasedExternalSignatureResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/components/TraceBasedExternalSignatureResolver.java @@ -40,15 +40,12 @@ import java.util.List; public class TraceBasedExternalSignatureResolver implements ExternalSignatureResolver { @NotNull private final BindingTrace trace; - @NotNull private final ExternalAnnotationResolver externalAnnotationResolver; @NotNull private final Project project; public TraceBasedExternalSignatureResolver( - @NotNull ExternalAnnotationResolver externalAnnotationResolver, @NotNull Project project, @NotNull BindingTrace trace ) { - this.externalAnnotationResolver = externalAnnotationResolver; this.project = project; this.trace = trace; } @@ -84,9 +81,9 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes assert methodOrConstructor instanceof JavaMethod || methodOrConstructor instanceof JavaConstructor : "Not a method or a constructor: " + methodOrConstructor.getName(); - AlternativeMethodSignatureData data = - new AlternativeMethodSignatureData(externalAnnotationResolver, methodOrConstructor, receiverType, project, valueParameters, - returnType, typeParameters, hasSuperMethods); + AlternativeMethodSignatureData data = new AlternativeMethodSignatureData( + methodOrConstructor, receiverType, project, valueParameters, returnType, typeParameters, hasSuperMethods + ); if (data.isAnnotated() && !data.hasErrors()) { if (JvmPackage.getPLATFORM_TYPES()) { @@ -110,8 +107,7 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes @NotNull JetType returnType, boolean isVar ) { - AlternativeFieldSignatureData data = - new AlternativeFieldSignatureData(externalAnnotationResolver, field, returnType, project, isVar); + AlternativeFieldSignatureData data = new AlternativeFieldSignatureData(field, returnType, project, isVar); if (data.isAnnotated() && !data.hasErrors()) { if (JvmPackage.getPLATFORM_TYPES()) { diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/AlternativeFieldSignatureData.java b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/AlternativeFieldSignatureData.java index 6cb2577c61d..36d9e372418 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/AlternativeFieldSignatureData.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/AlternativeFieldSignatureData.java @@ -21,7 +21,6 @@ import com.intellij.util.containers.ComparatorUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor; import org.jetbrains.kotlin.descriptors.impl.TypeParameterDescriptorImpl; -import org.jetbrains.kotlin.load.java.components.ExternalAnnotationResolver; import org.jetbrains.kotlin.load.java.structure.JavaField; import org.jetbrains.kotlin.psi.JetProperty; import org.jetbrains.kotlin.types.JetType; @@ -34,13 +33,12 @@ public class AlternativeFieldSignatureData extends ElementAlternativeSignatureDa private JetType altReturnType; public AlternativeFieldSignatureData( - @NotNull ExternalAnnotationResolver externalAnnotationResolver, @NotNull JavaField field, @NotNull JetType originalReturnType, @NotNull Project project, boolean isVar ) { - String signature = SignaturesUtil.getKotlinSignature(externalAnnotationResolver, field); + String signature = SignaturesUtil.getKotlinSignature(field); if (signature == null) { setAnnotated(false); diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/AlternativeMethodSignatureData.java b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/AlternativeMethodSignatureData.java index 8e763b38e72..670a6d8ca48 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/AlternativeMethodSignatureData.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/AlternativeMethodSignatureData.java @@ -28,7 +28,6 @@ import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor; import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor; import org.jetbrains.kotlin.descriptors.impl.TypeParameterDescriptorImpl; import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl; -import org.jetbrains.kotlin.load.java.components.ExternalAnnotationResolver; import org.jetbrains.kotlin.load.java.structure.JavaMember; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.psi.*; @@ -63,7 +62,6 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD private Map originalToAltTypeParameters; public AlternativeMethodSignatureData( - @NotNull ExternalAnnotationResolver externalAnnotationResolver, @NotNull JavaMember methodOrConstructor, @Nullable JetType receiverType, @NotNull Project project, @@ -72,7 +70,7 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD @NotNull List methodTypeParameters, boolean hasSuperMethods ) { - String signature = SignaturesUtil.getKotlinSignature(externalAnnotationResolver, methodOrConstructor); + String signature = SignaturesUtil.getKotlinSignature(methodOrConstructor); if (signature == null) { setAnnotated(false); diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/SignaturesUtil.java b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/SignaturesUtil.java index 35309a79deb..c4c7696d6f0 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/SignaturesUtil.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/kotlinSignature/SignaturesUtil.java @@ -19,9 +19,10 @@ package org.jetbrains.kotlin.resolve.jvm.kotlinSignature; import com.intellij.openapi.util.text.StringUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.load.java.components.ExternalAnnotationResolver; -import org.jetbrains.kotlin.load.java.structure.*; -import org.jetbrains.kotlin.name.FqName; +import org.jetbrains.kotlin.load.java.structure.JavaAnnotation; +import org.jetbrains.kotlin.load.java.structure.JavaAnnotationArgument; +import org.jetbrains.kotlin.load.java.structure.JavaLiteralAnnotationArgument; +import org.jetbrains.kotlin.load.java.structure.JavaMember; import static org.jetbrains.kotlin.load.java.JvmAnnotationNames.*; @@ -30,11 +31,11 @@ public class SignaturesUtil { } @Nullable - public static String getKotlinSignature(@NotNull ExternalAnnotationResolver externalAnnotationResolver, @NotNull JavaMember member) { - JavaAnnotation newAnnotation = findAnnotationWithExternal(externalAnnotationResolver, member, KOTLIN_SIGNATURE); + public static String getKotlinSignature(@NotNull JavaMember member) { + JavaAnnotation newAnnotation = member.findAnnotation(KOTLIN_SIGNATURE); if (newAnnotation != null) return extractKotlinSignatureArgument(newAnnotation); - JavaAnnotation oldAnnotation = findAnnotationWithExternal(externalAnnotationResolver, member, OLD_KOTLIN_SIGNATURE); + JavaAnnotation oldAnnotation = member.findAnnotation(OLD_KOTLIN_SIGNATURE); if (oldAnnotation != null) return extractKotlinSignatureArgument(oldAnnotation); return null; @@ -51,15 +52,4 @@ public class SignaturesUtil { } return null; } - - @Nullable - public static JavaAnnotation findAnnotationWithExternal(@NotNull ExternalAnnotationResolver externalAnnotationResolver, @NotNull JavaAnnotationOwner owner, @NotNull FqName name) { - JavaAnnotation annotation = owner.findAnnotation(name); - if (annotation != null) { - return annotation; - } - - return externalAnnotationResolver.findExternalAnnotation(owner, name); - } - } diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/JdkAnnotationsValidityTest.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/JdkAnnotationsValidityTest.java index ca4fdd8ad9d..47f9c25cb66 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/JdkAnnotationsValidityTest.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/JdkAnnotationsValidityTest.java @@ -71,7 +71,8 @@ public class JdkAnnotationsValidityTest extends AbstractSdkAnnotationsValidityTe CompilerConfiguration configuration = JetTestUtils.compilerConfigurationForTests( ConfigurationKind.JDK_ONLY, TestJdkKind.FULL_JDK, JetTestUtils.getAnnotationsJar() ); - configuration.add(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY, new File("ideaSDK/lib/jdkAnnotations.jar")); + // TODO: move this test to idea-tests and re-implement it for ExternalAnnotationsManagerImpl + // configuration.add(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY, new File("ideaSDK/lib/jdkAnnotations.jar")); return KotlinCoreEnvironment.createForTests(parentDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES); } diff --git a/compiler/util/src/org/jetbrains/kotlin/utils/PathUtil.java b/compiler/util/src/org/jetbrains/kotlin/utils/PathUtil.java index 92220d377e0..31b0913d4d8 100644 --- a/compiler/util/src/org/jetbrains/kotlin/utils/PathUtil.java +++ b/compiler/util/src/org/jetbrains/kotlin/utils/PathUtil.java @@ -18,9 +18,6 @@ package org.jetbrains.kotlin.utils; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.PathManager; -import com.intellij.openapi.util.io.FileUtil; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.openapi.vfs.VirtualFileManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.jps.model.java.impl.JavaSdkUtil; @@ -144,22 +141,6 @@ public class PathUtil { return new File(resourceRoot).getAbsoluteFile(); } - @NotNull - public static VirtualFile jarFileOrDirectoryToVirtualFile(@NotNull File file) { - if (file.exists()) { - if (file.isDirectory()) { - return VirtualFileManager.getInstance() - .findFileByUrl("file://" + FileUtil.toSystemIndependentName(file.getAbsolutePath())); - } - else { - return VirtualFileManager.getInstance().findFileByUrl("jar://" + FileUtil.toSystemIndependentName(file.getAbsolutePath()) + "!/"); - } - } - else { - throw new IllegalStateException("Path " + file + " does not exist."); - } - } - @NotNull public static List getJdkClassesRoots() { return JavaSdkUtil.getJdkClassesRoots(new File(System.getProperty("java.home")), true);