0
코드를 클래스를 인스턴스화 할 수 있도록 노드를 만드는 방법을 알고 싶습니다. 현재 코드를 수정하면 노드를 인식 할 수 없습니다. 나는 다음과 같은 노드를 생성하고 매개 변수scala AST에서 클래스를 호출 할 수 없습니다. 클래스를 찾을 수 없습니다.
val newRhs = Select(New(Ident("pra")),newTermName("<init>"));
retTree = treeCopy.ValDef(vd, mods, name, tpt, newRhs);
나는 다음과 같은 오류
받고 있어요위한 ValDef 노드를 교체 한 AST에서object Test{
def main(args: Array[String]) {
val a= new Avi;
}
}
class Avi{}
class pra{}
error: not found: value pra
나는 알고 싶습니다. 노드를 만든 방식이 잘못되어 내가해야 할 일이 있습니다. 이 retTree를 Transformer 클래스에 전달하여 AST를 변환합니다. 유형이 컴파일러의 Typer 단계에서 발견되지 않았습니다. 어떤 도움이라도 대단히 감사하겠습니다.
github에서 end-to-end 예제를 게시 할 수 있습니까? –
@EugeneBurmako이 레포에 파일을 추가했습니다. https://github.com/bnavarma/ScalaAst Explugin.scala에는 플러그인 코드가 들어 있으며 asdf.scala는 내가 실행중인 파일입니다. Avi가 asdf.scala에서 호출되고 있지만 플러그인에서 pra 클래스를 호출하려고합니다. 이를 위해 노드를 변형했지만 기호를 선택하지 않고 값 대신 pra를 확인하고 오류를 던집니다. –