public RefactoringStatus checkFinalConditions(IProgressMonitor pm) throws CoreException { pm.beginTask(RefactoringCoreMessages.ExtractConstantRefactoring_checking_preconditions, 4); /* Note: some checks are performed on change of input widget * values. (e.g. see ExtractConstantRefactoring.checkConstantNameOnChange()) */ // TODO: possibly add more checking for name conflicts that might // lead to a change in behaviour try { RefactoringStatus result = new RefactoringStatus(); fChange = createTextChange(new SubProgressMonitor(pm, 2)); String newCuSource = fChange.getPreviewContent(new NullProgressMonitor()); JavaScriptUnit newCUNode = new RefactoringASTParser(AST.JLS3).parse(newCuSource, fCu, true, true, null); IProblem[] newProblems = RefactoringAnalyzeUtil.getIntroducedCompileProblems(newCUNode, fCuRewrite.getRoot()); for (int i = 0; i < newProblems.length; i++) { IProblem problem = newProblems[i]; if (problem.isError()) result.addEntry( new RefactoringStatusEntry( (problem.isError() ? RefactoringStatus.ERROR : RefactoringStatus.WARNING), problem.getMessage(), new JavaStringStatusContext(newCuSource, new SourceRange(problem)))); } fConstantTypeCache = null; fCuRewrite.clearASTAndImportRewrites(); return result; } finally { pm.done(); } }