[jvm] API draft 3 updates
authorDaniil Ovchinnikov <daniil.ovchinnikov@jetbrains.com>
Mon, 10 Jul 2017 15:48:00 +0000 (18:48 +0300)
committerDaniil Ovchinnikov <daniil.ovchinnikov@jetbrains.com>
Mon, 10 Jul 2017 15:48:00 +0000 (18:48 +0300)
- add JvmReferenceType.getName()
- implement getPsiElement() only in PsiModifierListOwner
- handle package local modifier

java/java-psi-api/src/com/intellij/lang/jvm/types/JvmReferenceType.java
java/java-psi-api/src/com/intellij/psi/PsiClass.java
java/java-psi-api/src/com/intellij/psi/PsiField.java
java/java-psi-api/src/com/intellij/psi/PsiJvmConversionHelper.java
java/java-psi-api/src/com/intellij/psi/PsiMember.java
java/java-psi-api/src/com/intellij/psi/PsiMethod.java
java/java-psi-api/src/com/intellij/psi/PsiModifierListOwner.java
java/java-psi-api/src/com/intellij/psi/PsiParameter.java

index bfa1c3fedfd41af0d9119c731e75480794aed190..8830b0f1090c883999593a6f815b5f1f39d9627f 100644 (file)
@@ -16,6 +16,7 @@
 package com.intellij.lang.jvm.types;
 
 import com.intellij.lang.jvm.JvmTypeDeclarator;
+import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
 /**
@@ -24,6 +25,9 @@ import org.jetbrains.annotations.Nullable;
  */
 public interface JvmReferenceType extends JvmType {
 
+  @NotNull
+  String getName();
+
   @Nullable
   default JvmTypeDeclarator resolve() {
     JvmTypeResolveResult result = resolveType();
index f6cc81ee1249c25b9834ad5d29c86096cbf78147..32a68fd681d7f1ac0625ec60b5175b0cf436139c 100644 (file)
@@ -361,12 +361,6 @@ public interface PsiClass
 
   @NotNull
   @Override
-  default PsiClass getPsiElement() {
-    return this;
-  }
-
-  @NotNull
-  @Override
   default JvmClassKind classKind() {
     return getJvmClassKind(this);
   }
index 30b60752ab624d1da9d520f7e2ec28728cfd0bb3..4db01136eedd9629fa81aa411746cc4eb9dc8483 100644 (file)
@@ -48,12 +48,6 @@ public interface PsiField extends PsiMember, PsiVariable, PsiDocCommentOwner, Jv
   @Override
   @NotNull PsiIdentifier getNameIdentifier();
 
-  @Nullable
-  @Override
-  default PsiField getPsiElement() {
-    return this;
-  }
-
   @NotNull
   @Override
   default JvmType fieldType() {
index 756cbad9731de7e41f4f6da7314c420199b3c298..a50b632d3d578c367b7dec5a3daec2e14a99be8c 100644 (file)
@@ -42,6 +42,9 @@ public class PsiJvmConversionHelper {
         result.add(jvmModifier);
       }
     }
+    if (modifierListOwner.hasModifierProperty(PsiModifier.PACKAGE_LOCAL)) {
+      result.add(JvmModifier.PACKAGE_LOCAL);
+    }
     return result;
   }
 
@@ -55,11 +58,13 @@ public class PsiJvmConversionHelper {
 
   @Nullable
   public static JvmClassType getClassSuperType(@NotNull PsiClass psiClass) {
+    // TODO
     throw new RuntimeException("not implemented");
   }
 
   @NotNull
   public static Iterable<JvmClassType> getClassInterfaces(@NotNull PsiClass psiClass) {
+    // TODO
     throw new RuntimeException("not implemented");
   }
 
@@ -112,11 +117,6 @@ public class PsiJvmConversionHelper {
     }
   }
 
-  @Nullable
-  public static JvmReferenceType toJvmReferenceTypeOrNull(@Nullable PsiType type) {
-    return type instanceof PsiClassType ? toJvmReferenceType(((PsiClassType)type)) : null;
-  }
-
   private static class PsiJvmReferenceType implements JvmReferenceType {
 
     protected final @NotNull PsiClassType myPsiClassType;
@@ -125,6 +125,12 @@ public class PsiJvmConversionHelper {
       myPsiClassType = type;
     }
 
+    @NotNull
+    @Override
+    public String getName() {
+      return myPsiClassType.getClassName();
+    }
+
     @Nullable
     @Override
     public JvmTypeResolveResult resolveType() {
index c0acdeae428e10f5a40c083bcd2d75936153851f..0f76df031b0ea6ca97a81179ca05276014068a50 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2017 JetBrains s.r.o.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  */
 package com.intellij.psi;
 
+import com.intellij.lang.jvm.JvmMember;
 import org.jetbrains.annotations.Nullable;
 
 /**
  * Represents a member of a Java class (for example, a field or a method).
  */
-public interface PsiMember extends PsiModifierListOwner, NavigatablePsiElement {
+public interface PsiMember extends PsiModifierListOwner, NavigatablePsiElement, JvmMember {
   /**
    * The empty array of PSI members which can be reused to avoid unnecessary allocations.
    */
index 7713dfdd86fb899de42047b006b1a7fea95eb27e..be6a55d636f195da7f007d8c5230932a5e1a43c0 100644 (file)
@@ -204,12 +204,6 @@ public interface PsiMethod extends PsiMember, PsiNameIdentifierOwner, PsiModifie
 
   @NotNull
   @Override
-  default PsiMethod getPsiElement() {
-    return this;
-  }
-
-  @NotNull
-  @Override
   default JvmType returnType() {
     return PsiJvmConversionHelper.getMethodReturnType(this);
   }
index 9c25841000c7b1df2234aa173ba454b247a658de..e61fec5813119a8f6105a541b39565c88934a122 100644 (file)
@@ -59,7 +59,7 @@ public interface PsiModifierListOwner extends PsiElement, JvmModifiersOwner {
     return getModifiers(this);
   }
 
-  @Nullable
+  @NotNull
   @Override
   default PsiElement getPsiElement() {
     return this;
index 127316b02b2c34729d2c26334e6d7a243875fb6a..985806c22971b21de5b8432cef5bc392d3670177 100644 (file)
@@ -55,12 +55,6 @@ public interface PsiParameter extends PsiVariable, JvmParameter {
   @Nullable
   PsiTypeElement getTypeElement();
 
-  @Nullable
-  @Override
-  default PsiElement getPsiElement() {
-    return this;
-  }
-
   @NotNull
   @Override
   default JvmType parameterType() {