Basic support for Java and Kotlin annotations
This commit is contained in:
@@ -16,7 +16,9 @@
|
|||||||
<option name="TRANSPORT" value="0" />
|
<option name="TRANSPORT" value="0" />
|
||||||
<option name="LOCAL" value="true" />
|
<option name="LOCAL" value="true" />
|
||||||
</RunnerSettings>
|
</RunnerSettings>
|
||||||
|
<RunnerSettings RunnerId="Run" />
|
||||||
<ConfigurationWrapper RunnerId="Debug" />
|
<ConfigurationWrapper RunnerId="Debug" />
|
||||||
|
<ConfigurationWrapper RunnerId="Run" />
|
||||||
<method />
|
<method />
|
||||||
</configuration>
|
</configuration>
|
||||||
</component>
|
</component>
|
||||||
+6
-51
@@ -6,70 +6,25 @@ import com.google.common.collect.Sets;
|
|||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.util.Pair;
|
import com.intellij.openapi.util.Pair;
|
||||||
import com.intellij.openapi.vfs.VirtualFile;
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
import com.intellij.psi.JavaPsiFacade;
|
import com.intellij.psi.*;
|
||||||
import com.intellij.psi.PsiArrayType;
|
|
||||||
import com.intellij.psi.PsiClass;
|
|
||||||
import com.intellij.psi.PsiClassType;
|
|
||||||
import com.intellij.psi.PsiElement;
|
|
||||||
import com.intellij.psi.PsiEllipsisType;
|
|
||||||
import com.intellij.psi.PsiJavaFile;
|
|
||||||
import com.intellij.psi.PsiMethod;
|
|
||||||
import com.intellij.psi.PsiModifier;
|
|
||||||
import com.intellij.psi.PsiModifierListOwner;
|
|
||||||
import com.intellij.psi.PsiPackage;
|
|
||||||
import com.intellij.psi.PsiPrimitiveType;
|
|
||||||
import com.intellij.psi.PsiType;
|
|
||||||
import com.intellij.psi.PsiTypeParameter;
|
|
||||||
import com.intellij.psi.PsiTypeParameterListOwner;
|
|
||||||
import com.intellij.psi.PsiTypeVariable;
|
|
||||||
import com.intellij.psi.impl.source.PsiClassReferenceType;
|
|
||||||
import com.intellij.psi.search.DelegatingGlobalSearchScope;
|
import com.intellij.psi.search.DelegatingGlobalSearchScope;
|
||||||
import com.intellij.psi.search.GlobalSearchScope;
|
import com.intellij.psi.search.GlobalSearchScope;
|
||||||
import jet.typeinfo.TypeInfoVariance;
|
import jet.typeinfo.TypeInfoVariance;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassKind;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.ConstructorDescriptorImpl;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptorImpl;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptorVisitor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.Modality;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.MutableClassDescriptorLite;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.NamedFunctionDescriptorImpl;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.PropertyGetterDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.PropertySetterDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptorImpl;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.VariableDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.Visibility;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.java.kt.JetClassAnnotation;
|
import org.jetbrains.jet.lang.resolve.java.kt.JetClassAnnotation;
|
||||||
import org.jetbrains.jet.lang.types.JetStandardClasses;
|
import org.jetbrains.jet.lang.types.*;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
|
||||||
import org.jetbrains.jet.lang.types.TypeSubstitutor;
|
|
||||||
import org.jetbrains.jet.lang.types.TypeUtils;
|
|
||||||
import org.jetbrains.jet.lang.types.Variance;
|
|
||||||
import org.jetbrains.jet.plugin.JetFileType;
|
import org.jetbrains.jet.plugin.JetFileType;
|
||||||
import org.jetbrains.jet.rt.signature.JetSignatureAdapter;
|
import org.jetbrains.jet.rt.signature.JetSignatureAdapter;
|
||||||
import org.jetbrains.jet.rt.signature.JetSignatureExceptionsAdapter;
|
import org.jetbrains.jet.rt.signature.JetSignatureExceptionsAdapter;
|
||||||
import org.jetbrains.jet.rt.signature.JetSignatureReader;
|
import org.jetbrains.jet.rt.signature.JetSignatureReader;
|
||||||
import org.jetbrains.jet.rt.signature.JetSignatureVisitor;
|
import org.jetbrains.jet.rt.signature.JetSignatureVisitor;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author abreslav
|
* @author abreslav
|
||||||
@@ -235,7 +190,7 @@ public class JavaDescriptorResolver {
|
|||||||
|
|
||||||
String name = psiClass.getName();
|
String name = psiClass.getName();
|
||||||
ResolverClassData classData = new ResolverClassData();
|
ResolverClassData classData = new ResolverClassData();
|
||||||
ClassKind kind = psiClass.isInterface() ? ClassKind.TRAIT : ClassKind.CLASS;
|
ClassKind kind = psiClass.isInterface() ? (psiClass.isAnnotationType() ? ClassKind.ANNOTATION_CLASS : ClassKind.TRAIT) : ClassKind.CLASS;
|
||||||
classData.classDescriptor = new MutableClassDescriptorLite(
|
classData.classDescriptor = new MutableClassDescriptorLite(
|
||||||
resolveParentDescriptor(psiClass), kind
|
resolveParentDescriptor(psiClass), kind
|
||||||
);
|
);
|
||||||
@@ -288,7 +243,7 @@ public class JavaDescriptorResolver {
|
|||||||
// Example:
|
// Example:
|
||||||
// class Kotlin() : Java() {}
|
// class Kotlin() : Java() {}
|
||||||
// abstract public class Java {}
|
// abstract public class Java {}
|
||||||
if (!psiClass.isInterface()) {
|
if (!psiClass.isInterface() || psiClass.isAnnotationType()) {
|
||||||
ConstructorDescriptorImpl constructorDescriptor = new ConstructorDescriptorImpl(
|
ConstructorDescriptorImpl constructorDescriptor = new ConstructorDescriptorImpl(
|
||||||
classData.classDescriptor,
|
classData.classDescriptor,
|
||||||
Collections.<AnnotationDescriptor>emptyList(),
|
Collections.<AnnotationDescriptor>emptyList(),
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
annotation class my
|
||||||
|
annotation class my1(i : Int)
|
||||||
|
annotation class my2(i : Int = 0)
|
||||||
|
|
||||||
|
my fun foo() {}
|
||||||
|
<!NO_VALUE_FOR_PARAMETER!>my1<!> fun foo2() {}
|
||||||
|
my1(2) fun foo3() {}
|
||||||
|
my2() fun foo4() {}
|
||||||
|
my2 fun foo41() {}
|
||||||
|
my2(2) fun foo42() {}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
// +JDK
|
||||||
|
|
||||||
|
import java.lang.Deprecated as deprecated
|
||||||
|
|
||||||
|
Deprecated fun foo() {}
|
||||||
|
|
||||||
|
deprecated fun foo1() {}
|
||||||
Reference in New Issue
Block a user