summaryrefslogtreecommitdiffstats
path: root/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFunctionDefinitionInterface.java
blob: d37381713430b98b0678a8a4e5a109fc6ffa19d7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package org.intellij.sdk.language.psi;

import com.intellij.psi.util.PsiTreeUtil;
import org.intellij.sdk.language.SdUtil;

/**
 * This interface represents a function's declaration in the SD language.
 * @author shahariel
 */
public interface SdFunctionDefinitionInterface extends SdDeclaration {
    default boolean isOverride() {
        String macroName = this.getName();
        
        SdRankProfileDefinition curRankProfile = PsiTreeUtil.getParentOfType(this, SdRankProfileDefinition.class);
        if (curRankProfile != null) {
            curRankProfile = (SdRankProfileDefinition) SdUtil.getRankProfileParent(curRankProfile);
        }
        while (curRankProfile != null) {
            for (SdFunctionDefinition macro : PsiTreeUtil.collectElementsOfType(curRankProfile, SdFunctionDefinition.class)) {
                if (macro.getName().equals(macroName)) {
                    return true;
                }
            }
            curRankProfile = (SdRankProfileDefinition) SdUtil.getRankProfileParent(curRankProfile);
        }
        return false;
        
    }
}