2017-03-07 1 views
2

예를 들어, Library.java에는 HashMap users = new HashMap() 및 users.put (new Integer (user.getCode()), user)가 있습니다. 그래서 put() 메소드가 다음과 같을 것으로 예상하지만 빈 값을 반환합니다.Java2OFG가 eLib에서 호출되는 메소드를 찾을 수 없습니까?

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]: {} 

답변

2

문맥에서 변수를 재사용하기 위해 불량배의 패턴 일치 코드에 공통적 인 함정이 있습니다. 이 경우에는 m이 이미 바인딩되어 있고 일치가 항상 실패하는 동등한 검사가됩니다. 결과는 빈 세트입니다.

새 유형 검사기에서이를 경고 할 수 있으며 문제를 피하기 위해 패턴의 새 변수에 유형을 추가 할 수 있습니다.

+1

저는 이것이 오류없이 디버깅하기가 매우 어렵 기 때문에 일종의 FAQ 나 문서에서 언급하는 것이 중요하다고 생각합니다. –

+0

동의. 흠뻑. 상호 작용을 완전히 피하기 위해 실제로 언어가 변경됩니다. – jurgenv

관련 문제