2012-07-10 4 views
2

새로 생성 된 메서드 선언에서 참조되는 형식에 대해 가져 오기 선언을 컴파일 단위에 추가하려고합니다. 이를 위해 나는 주어진 ImportRewrite 인스턴스를 방문하는 모든 타입 (Simple 타입, 파라미터 화 된 타입 등)을 추가하는 간단한 ASTVisitor를 만들었다. 필자가 변경 한 내용을 MultiTextEdit 인스턴스에 추가하려면 먼저 rewriteAST() 메서드를 사용하여 ASTRewrite 인스턴스에 변경 내용을 추가 한 다음 rewriteImports() 메서드를 사용하여 ImportRewrite의 변경 내용을 추가합니다. 아래의 코드 :올바른 위치에 가져 오기 선언 추가

MultiTextEdit edit = new MultiTextEdit(); 
TextEdit astEdit = astRewrite.rewriteAST(); 
edit.addChild(astEdit); 
TextEdit importEdit = importRewrite.rewriteImports(new NullProgressMonitor()); 
edit.addChild(importEdit); 

또한, 방문자의 한 부분이다 (다른 유형이 동일한 패턴을 따른다) :

public boolean visit(SimpleType type) { 
    ITypeBinding typeBinding = type.resolveBinding(); 
    importRewrite.addImport(typeBinding); 
    return true; 
} 

문제는 새로 만든 컴파일 단위에서 가져 오기 선언이다 다른 모든 형식 선언 다음에 위치하므로 컴파일 오류가 발생합니다. 문서에서 언급했듯이 import import 선언은 ASTRewrite에 의해 편집되지 않습니다. astRewrite가 변경되기 전에 importRewrite 변경 사항을 추가하여 패키지 선언 앞에 위치하는 가져 오기 선언을 발생 시키므로 컴파일 오류가 발생합니다. 문제를 해결하고 패키지 선언과 형식 선언 사이의 적절한 위치에 가져 오기 선언을 추가하는 방법에 대한 아이디어?

답변

0

IDE는 사용자의 유형 선언이 주석이라고 생각합니다. 그것이 그들을 뒤쫓는 이유입니다.

관련 문제