Java2OFG 找不到在 eLib 中调用的方法?
Java2OFG cannot find methods being called in eLib?
比如Library.java中有一个HashMap users = new HashMap() and users.put(new Integer(user.getCode()), user);。所以我希望 put() 方法在下面的集合中,但它 returns 是空的。
rascal> m = createM3FromEclipseProject(elib_dir);
ok
rascal> p = createOFG(elib_dir);
ok
rascal> { m | call(_, _, _, m, _) <- p.statements, method(m, _) <- p.decls}
set[void]: {}
rascal> { m | call(_, _, _, m, _) <- p.statements}
set[void]: {}
重用上下文中的变量是 rascal 模式匹配代码中的一个常见缺陷。在这种情况下 m
已经绑定,然后匹配成为一个总是失败的相等性检查。结果是一个空集。
新的类型检查器可以对此发出警告,您可以将类型添加到模式中的新变量以避免该问题。
比如Library.java中有一个HashMap users = new HashMap() and users.put(new Integer(user.getCode()), user);。所以我希望 put() 方法在下面的集合中,但它 returns 是空的。
rascal> m = createM3FromEclipseProject(elib_dir);
ok
rascal> p = createOFG(elib_dir);
ok
rascal> { m | call(_, _, _, m, _) <- p.statements, method(m, _) <- p.decls}
set[void]: {}
rascal> { m | call(_, _, _, m, _) <- p.statements}
set[void]: {}
重用上下文中的变量是 rascal 模式匹配代码中的一个常见缺陷。在这种情况下 m
已经绑定,然后匹配成为一个总是失败的相等性检查。结果是一个空集。
新的类型检查器可以对此发出警告,您可以将类型添加到模式中的新变量以避免该问题。