astparser:在解析绑定后查找声明节点

eufgjt7s  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(223)

我在启用绑定的情况下创建一个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;
    }

感谢您的帮助。

chhkpiq4

chhkpiq41#

parser.setEnvironment(classpath, sources, encodings, true);

不见了。
否则,无法解析到声明的绑定,该声明不在已解析的代码中,而是在类路径的某个位置。
请参见astparser::setenvironment

相关问题