2 * Copyright 2000-2009 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com
.intellij
.psi
.impl
.source
;
18 import com
.intellij
.lang
.ASTNode
;
19 import com
.intellij
.openapi
.diagnostic
.Logger
;
20 import com
.intellij
.psi
.*;
21 import com
.intellij
.psi
.impl
.java
.stubs
.PsiClassStub
;
22 import com
.intellij
.psi
.impl
.light
.LightClassReference
;
23 import org
.jetbrains
.annotations
.NotNull
;
25 public class PsiEnumConstantInitializerImpl
extends PsiClassImpl
implements PsiEnumConstantInitializer
{
26 private static final Logger LOG
= Logger
.getInstance("#com.intellij.psi.impl.source.PsiEnumConstantInitializerImpl");
27 private PsiClassType myCachedBaseType
= null;
29 public PsiEnumConstantInitializerImpl(final PsiClassStub stub
) {
33 public PsiEnumConstantInitializerImpl(final ASTNode node
) {
38 protected Object
clone() {
39 PsiEnumConstantInitializerImpl clone
= (PsiEnumConstantInitializerImpl
)super.clone();
40 clone
.myCachedBaseType
= null;
44 public void subtreeChanged() {
45 super.subtreeChanged();
46 myCachedBaseType
= null;
49 public PsiExpressionList
getArgumentList() {
50 PsiElement parent
= getParent();
51 LOG
.assertTrue(parent
instanceof PsiEnumConstant
);
52 return ((PsiCall
)parent
).getArgumentList();
55 public boolean isInQualifiedNew() {
61 public PsiJavaCodeReferenceElement
getBaseClassReference() {
62 PsiClass containingClass
= getBaseClass();
63 return new LightClassReference(getManager(), containingClass
.getName(), containingClass
);
66 private PsiClass
getBaseClass() {
67 PsiElement parent
= getParent();
68 LOG
.assertTrue(parent
instanceof PsiEnumConstant
);
69 PsiClass containingClass
= ((PsiEnumConstant
)parent
).getContainingClass();
70 LOG
.assertTrue(containingClass
!= null);
71 return containingClass
;
74 public PsiElement
getParent() {
75 return getParentByStub();
79 public PsiEnumConstant
getEnumConstant() {
80 return (PsiEnumConstant
) getParent();
84 public PsiClassType
getBaseClassType() {
85 if (myCachedBaseType
== null) {
86 myCachedBaseType
= JavaPsiFacade
.getInstance(getProject()).getElementFactory().createType(getBaseClass());
88 return myCachedBaseType
;
91 public PsiIdentifier
getNameIdentifier() {
95 public String
getQualifiedName() {
99 public PsiModifierList
getModifierList() {
103 public boolean hasModifierProperty(@NotNull String name
) {
107 public PsiReferenceList
getExtendsList() {
111 public PsiReferenceList
getImplementsList() {
116 public PsiClassType
[] getSuperTypes() {
117 return new PsiClassType
[]{getBaseClassType()};
120 public boolean isInterface() {
124 public boolean isAnnotationType() {
128 public boolean isEnum() {
132 public PsiTypeParameterList
getTypeParameterList() {
136 public PsiElement
getOriginalElement() {
140 public void accept(@NotNull PsiElementVisitor visitor
) {
141 if (visitor
instanceof JavaElementVisitor
) {
142 ((JavaElementVisitor
)visitor
).visitEnumConstantInitializer(this);
145 visitor
.visitElement(this);
149 public String
toString() {
150 return "PsiAnonymousClass (PsiEnumConstantInitializerImpl)):";