mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
bug 268604, hyperlinks for overloaded operators
This commit is contained in:
parent
0abd280a88
commit
2a023a46e0
2 changed files with 22 additions and 8 deletions
|
@ -50,11 +50,13 @@ public class HyperlinkTest extends TestCase {
|
||||||
" void set(int x, int y); \n" +
|
" void set(int x, int y); \n" +
|
||||||
" int getX(); \n" +
|
" int getX(); \n" +
|
||||||
" int getY(); \n" +
|
" int getY(); \n" +
|
||||||
|
" Point operator+(Point); \n" +
|
||||||
" private: \n" +
|
" private: \n" +
|
||||||
" int x, y; \n" +
|
" int x, y; \n" +
|
||||||
"}; \n" +
|
"}; \n" +
|
||||||
"int main() { \n" +
|
"int test(Point p) { \n" +
|
||||||
" char* str = \"STRING LITERAL\"; \n" +
|
" char* str = \"STRING LITERAL\"; \n" +
|
||||||
|
" p + p;" +
|
||||||
"} \n";
|
"} \n";
|
||||||
|
|
||||||
|
|
||||||
|
@ -172,6 +174,9 @@ public class HyperlinkTest extends TestCase {
|
||||||
assertHyperlink(CPP_CODE.indexOf("set(") + 1, CPP_CODE.indexOf("set("), "set".length());
|
assertHyperlink(CPP_CODE.indexOf("set(") + 1, CPP_CODE.indexOf("set("), "set".length());
|
||||||
assertHyperlink(CPP_CODE.indexOf("getX()") + 1, CPP_CODE.indexOf("getX()"), "getX".length());
|
assertHyperlink(CPP_CODE.indexOf("getX()") + 1, CPP_CODE.indexOf("getX()"), "getX".length());
|
||||||
assertHyperlink(CPP_CODE.indexOf("getY()") + 1, CPP_CODE.indexOf("getY()"), "getY".length());
|
assertHyperlink(CPP_CODE.indexOf("getY()") + 1, CPP_CODE.indexOf("getY()"), "getY".length());
|
||||||
|
|
||||||
|
// hyperlinks for overloaded operators
|
||||||
|
assertHyperlink(CPP_CODE.indexOf("+ p"), CPP_CODE.indexOf("+ p"), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -180,6 +185,9 @@ public class HyperlinkTest extends TestCase {
|
||||||
|
|
||||||
// 'class' is not a keyword in C, it should be hyperlinked
|
// 'class' is not a keyword in C, it should be hyperlinked
|
||||||
assertHyperlink(C_CODE_1.indexOf("class") + 1, C_CODE_1.indexOf("class"), "class".length());
|
assertHyperlink(C_CODE_1.indexOf("class") + 1, C_CODE_1.indexOf("class"), "class".length());
|
||||||
|
|
||||||
|
// no hyperlinks for numeric literals
|
||||||
|
assertNotHyperlink(C_CODE_1.indexOf("99") + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -91,10 +91,16 @@ public class CElementHyperlinkDetector extends AbstractHyperlinkDetector {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// search for include statement
|
final IASTNode implicit = nodeSelector.findEnclosingImplicitName(offset, length);
|
||||||
final IASTNode cand= nodeSelector.findEnclosingNode(offset, length);
|
if(implicit != null) {
|
||||||
if (cand instanceof IASTPreprocessorIncludeStatement) {
|
linkLocation = implicit.getFileLocation();
|
||||||
linkLocation= cand.getFileLocation();
|
}
|
||||||
|
else {
|
||||||
|
// search for include statement
|
||||||
|
final IASTNode cand= nodeSelector.findEnclosingNode(offset, length);
|
||||||
|
if (cand instanceof IASTPreprocessorIncludeStatement) {
|
||||||
|
linkLocation= cand.getFileLocation();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (linkLocation != null) {
|
if (linkLocation != null) {
|
||||||
|
@ -106,13 +112,13 @@ public class CElementHyperlinkDetector extends AbstractHyperlinkDetector {
|
||||||
IRegion wordRegion= CWordFinder.findWord(document, offset);
|
IRegion wordRegion= CWordFinder.findWord(document, offset);
|
||||||
if (wordRegion != null) {
|
if (wordRegion != null) {
|
||||||
try {
|
try {
|
||||||
String word= document.get(wordRegion.getOffset(), wordRegion.getLength());
|
String word = document.get(wordRegion.getOffset(), wordRegion.getLength());
|
||||||
if (!isLanguageKeyword(lang, word)) {
|
if(word.length() > 0 && !Character.isDigit(word.charAt(0)) && !isLanguageKeyword(lang, word)) {
|
||||||
result[0]= new CElementHyperlink(
|
result[0]= new CElementHyperlink(
|
||||||
new Region(wordRegion.getOffset(), wordRegion.getLength()), openAction);
|
new Region(wordRegion.getOffset(), wordRegion.getLength()), openAction);
|
||||||
}
|
}
|
||||||
} catch (BadLocationException exc) {
|
} catch (BadLocationException exc) {
|
||||||
// ingore
|
// ignore
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue