check that we're completing inside the reference (EA-16521)

This commit is contained in:
peter.gromov
2010-11-13 20:56:17 +03:00
parent dd6eee117d
commit 73376080e7
@@ -102,11 +102,8 @@ public class LegacyCompletionContributor extends CompletionContributor {
}
}
else if (ref instanceof PsiDynaReference) {
int offset = startOffset - ref.getElement().getTextRange().getStartOffset();
for (final PsiReference reference : ((PsiDynaReference<?>)ref).getReferences()) {
if (ReferenceRange.containsOffsetInElement(reference, offset)) {
processReference(result, startOffset, consumer, reference);
}
processReference(result, startOffset, consumer, reference);
}
}
else if (ref != null) {
@@ -118,6 +115,10 @@ public class LegacyCompletionContributor extends CompletionContributor {
final int startOffset,
final PairConsumer<PsiReference, CompletionResultSet> consumer,
final PsiReference reference) {
if (!ReferenceRange.containsOffsetInElement(reference, startOffset)) {
return;
}
final int offsetInElement = startOffset - reference.getElement().getTextRange().getStartOffset();
final String prefix = reference.getElement().getText().substring(reference.getRangeInElement().getStartOffset(), offsetInElement);
consumer.consume(reference, result.withPrefixMatcher(prefix));