package com.intellij.lang.jvm.types;
import com.intellij.lang.jvm.JvmTypeDeclarator;
+import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
*/
public interface JvmReferenceType extends JvmType {
+ @NotNull
+ String getName();
+
@Nullable
default JvmTypeDeclarator resolve() {
JvmTypeResolveResult result = resolveType();
@NotNull
@Override
- default PsiClass getPsiElement() {
- return this;
- }
-
- @NotNull
- @Override
default JvmClassKind classKind() {
return getJvmClassKind(this);
}
@Override
@NotNull PsiIdentifier getNameIdentifier();
- @Nullable
- @Override
- default PsiField getPsiElement() {
- return this;
- }
-
@NotNull
@Override
default JvmType fieldType() {
result.add(jvmModifier);
}
}
+ if (modifierListOwner.hasModifierProperty(PsiModifier.PACKAGE_LOCAL)) {
+ result.add(JvmModifier.PACKAGE_LOCAL);
+ }
return result;
}
@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");
}
}
}
- @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;
myPsiClassType = type;
}
+ @NotNull
+ @Override
+ public String getName() {
+ return myPsiClassType.getClassName();
+ }
+
@Nullable
@Override
public JvmTypeResolveResult resolveType() {
/*
- * 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.
*/
@NotNull
@Override
- default PsiMethod getPsiElement() {
- return this;
- }
-
- @NotNull
- @Override
default JvmType returnType() {
return PsiJvmConversionHelper.getMethodReturnType(this);
}
return getModifiers(this);
}
- @Nullable
+ @NotNull
@Override
default PsiElement getPsiElement() {
return this;
@Nullable
PsiTypeElement getTypeElement();
- @Nullable
- @Override
- default PsiElement getPsiElement() {
- return this;
- }
-
@NotNull
@Override
default JvmType parameterType() {