我在启用绑定的情况下创建一个ast,当我稍后解析绑定时,我会得到一个有效的itypebinding。但是,当我想要获取绑定的声明节点时,它总是返回null(除非itypebinding是在sourcefile中声明的)。
以下是我的ast生成代码:
public void parseFunction(IFile sourceFile) {
ICompilationUnit element = JavaCore.createCompilationUnitFrom(sourceFile);
ASTParser parser = ASTParser.newParser(AST.JLS14);
parser.setResolveBindings(true);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setBindingsRecovery(true);
parser.setSource(element);
CompilationUnit cu = (CompilationUnit) parser.createAST(null);
cu.accept(new ASTVisitor() {
public boolean visit(FieldDeclaration variable) {
ITypeBinding binding = variable.getType().resolveBinding();
//binding is not null here
ASTNode declartionNode = cu.findDeclaringNode(binding);
//declartionNode is null here
return false;
}
});
return;
}
感谢您的帮助。
1条答案
按热度按时间chhkpiq41#
不见了。
否则,无法解析到声明的绑定,该声明不在已解析的代码中,而是在类路径的某个位置。
请参见astparser::setenvironment