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
.ide
.hierarchy
.method
;
18 import com
.intellij
.psi
.PsiClass
;
19 import com
.intellij
.psi
.PsiMethod
;
20 import com
.intellij
.psi
.PsiModifier
;
21 import com
.intellij
.psi
.PsiSubstitutor
;
22 import com
.intellij
.psi
.util
.MethodSignatureUtil
;
23 import com
.intellij
.psi
.util
.MethodSignature
;
25 final class MethodHierarchyUtil
{
26 public static PsiMethod
findBaseMethodInClass(final PsiMethod baseMethod
, final PsiClass aClass
, final boolean checkBases
) {
27 if (baseMethod
== null) return null; // base method is invalid
28 if (cannotBeOverridding(baseMethod
)) return null;
29 /*if (!checkBases) return MethodSignatureUtil.findMethodBySignature(aClass, signature, false);*/
30 return MethodSignatureUtil
.findMethodBySuperMethod(aClass
, baseMethod
, checkBases
);
31 /*final MethodSignatureBackedByPsiMethod signature = SuperMethodsSearch.search(baseMethod, aClass, checkBases, false).findFirst();
32 return signature == null ? null : signature.getMethod();*/
35 private static boolean cannotBeOverridding(final PsiMethod method
) {
36 final PsiClass parentClass
= method
.getContainingClass();
37 return parentClass
== null
38 || method
.isConstructor()
39 || method
.hasModifierProperty(PsiModifier
.STATIC
)
40 || method
.hasModifierProperty(PsiModifier
.PRIVATE
);