diff -r 8e5800ea1ced csl.api/test/unit/src/org/netbeans/modules/csl/api/test/CslTestBase.java --- a/csl.api/test/unit/src/org/netbeans/modules/csl/api/test/CslTestBase.java Wed Jul 01 13:54:05 2009 +0200 +++ b/csl.api/test/unit/src/org/netbeans/modules/csl/api/test/CslTestBase.java Wed Jul 01 14:26:41 2009 +0200 @@ -319,6 +319,18 @@ * from the fuller text */ public static int getCaretOffset(String text, String caretLine) { + return getCaretOffsetInternal(text, caretLine).offset; + } + + /** + * Like getCaretOffset, but the returned CaretLineOffset + * contains also the modified caretLine param. + + * @param text + * @param caretLine + * @return + */ + private static CaretLineOffset getCaretOffsetInternal(String text, String caretLine) { int caretDelta = caretLine.indexOf('^'); assertTrue(caretDelta != -1); caretLine = caretLine.substring(0, caretDelta) + caretLine.substring(caretDelta + 1); @@ -327,7 +339,7 @@ int caretOffset = lineOffset + caretDelta; - return caretOffset; + return new CaretLineOffset(caretOffset, caretLine); } @@ -3717,7 +3729,7 @@ return hints; } - protected ComputedHints computeHints(NbTestCase test, final Rule hint, String relFilePath, FileObject fileObject, final String caretLine, final ChangeOffsetType changeOffsetType) throws Exception { + protected ComputedHints computeHints(NbTestCase test, final Rule hint, String relFilePath, FileObject fileObject, final String lineWithCaret, final ChangeOffsetType changeOffsetType) throws Exception { assertTrue(relFilePath == null || fileObject == null); initializeRegistry(); @@ -3729,13 +3741,17 @@ Source testSource = getTestSource(fileObject); final int caretOffset; - if (caretLine != null) { - caretOffset = getCaretOffset(testSource.createSnapshot().getText().toString(), caretLine); - enforceCaretOffset(testSource, caretOffset); - } else { - caretOffset = -1; - } - + final String caretLine; + if (lineWithCaret != null) { + CaretLineOffset caretLineOffset = getCaretOffsetInternal(testSource.createSnapshot().getText().toString(), lineWithCaret); + caretOffset = caretLineOffset.offset; + caretLine = caretLineOffset.caretLine; + enforceCaretOffset(testSource, caretLineOffset.offset); + } else { + caretOffset = -1; + caretLine = lineWithCaret; + } + final ComputedHints [] result = new ComputedHints[] { null }; ParserManager.parse(Collections.singleton(testSource), new UserTask() { public @Override void run(ResultIterator resultIterator) throws Exception { @@ -3818,7 +3834,7 @@ manager.setTestingRules(null, null, null, testHints); if (caretLine != null) { - int start = text.indexOf(caretLine); + int start = text.indexOf(caretLine.toString()); int end = start+caretLine.length(); RuleContext context = manager.createRuleContext(pr, language, -1, start, end); provider.computeSelectionHints(manager, context, hints, start, end); @@ -4349,4 +4365,15 @@ public void close() throws SecurityException { } } // End of Waiter class + + private static class CaretLineOffset { + private final int offset; + private final String caretLine; + + public CaretLineOffset(int offset, String caretLine) { + this.offset = offset; + this.caretLine = caretLine; + } + + } }