我试图通过在 PsiImplUtil 类中创建方法来覆盖我的一些 PsiElements 中的 getReference() 方法,但没有注入任何方法。下面是需要方法 (ValidNameExpr) 的元素。我确定我只是在某个地方犯了一个小错误,但我不明白为什么这不起作用。我尝试使该方法成为非静态方法,但这也无济于事。如果您知道可能出了什么问题,您能帮忙吗?
// This is a generated file. Not intended for manual editing.
package lang.psi.impl;
public class JMMValidNameExprImpl extends ASTWrapperPsiElement implements JMMValidNameExpr {
public JMMValidNameExprImpl(@NotNull ASTNode node) {
super(node);
}
public void accept(@NotNull JMMVisitor visitor) {
visitor.visitValidNameExpr(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof JMMVisitor) accept((JMMVisitor)visitor);
else super.accept(visitor);
}
@Override
@NotNull
public PsiElement getValidName() {
return findNotNullChildByType(VALID_NAME);
}
}
这是带有方法实现的 util 类
package lang.psi;
public class JMMPsiImplUtil {
public static PsiReference getReference(IReference ref) {
return RefUtil.makeRef(expr, expr.getTextRangeInParent());
}
//more stuff here... (there are no other methods named getReference, just in case that is a problem)
这是我的 .BNF 文件
{
...
psiImplUtilClass = "lang.psi.JMMPsiImplUtil"
...
}
...
validNameExpr ::= VALID_NAME {extends=expr implements="lang.psi.IReference" methods=[getReference]}
More stuff...