我在点击位置时遇到了问题。我所做的是从具有函数的方法创建AST:
getMethodASTEclipse(method, model=projectModel);
其中method只是
的一个实例methods(projectModel);
当我访问那棵树并希望获得if语句时我可以调用
case i: \if(_, _, _):println(i@src);
源代码将被打印,我可以点击它,eclipse将使用正确的if语句转到正确的类。表格是这样的:
|project://MyProject/src/MyClass.java|(2836,143,<104,1>,<109,2>)
但是当我使用方法从文件中获取AST时:
createAstFromFile(class, true);
并给出一个方法或文件的类instaed我也可以访问它并得到相同的if语句并打印它但它的形式不同,我不能点击它。为什么不呢?
它的形式如下:
|java+class:///MyClass/src/MyClass|(17938,1105,<544,4>,<570,5>)
我还注意到,在打印每个位置后,偏移量会大幅增加。
如何将其点击到正确的位置?我认为它必须对偏移和位置的形式做一些事情。我试着使用这个方法:
resolveJava(loc l);
来自Registry类的但是也没有用,并试图查找| loc定义的声明但是那里也没有。
提前致谢。
答案 0 :(得分:0)
位置无法点击的原因是因为无法解析这些位置。问题是createAstFromFile(_,_)
仅适用于具有project
或file
方案的地理位置。
现在,您可以从模型中的declarations
注释中获取物理位置,并使用它来创建AST。
我们会考虑制作它,以便可以将位置与其他方案一起使用。