1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-08 08:45:44 +02:00

Fine tuning of F3 navigation.

This commit is contained in:
Sergey Prigogin 2009-05-22 06:08:30 +00:00
parent bf6979fc33
commit 1c29e6b4d6
5 changed files with 469 additions and 445 deletions

View file

@ -80,10 +80,10 @@ public abstract class CPPSelectionTestsAnyIndexer extends BaseSelectionTestsInde
private void assertNode(String name, int offset, IASTNode node) {
assertNotNull(node);
assertEquals(name, node.toString());
assertEquals(node.toString(), name);
IASTFileLocation loc= node.getFileLocation();
assertEquals(offset, loc.getNodeOffset());
assertEquals(name.length(), loc.getNodeLength());
assertEquals(loc.getNodeOffset(), offset);
assertEquals(loc.getNodeLength(), name.length());
}
protected void waitUntilFileIsIndexed(IIndex index, IFile file, int maxmillis) throws Exception {
@ -130,17 +130,17 @@ public abstract class CPPSelectionTestsAnyIndexer extends BaseSelectionTestsInde
IASTNode node = testF3(file, offset);
assertTrue(node instanceof IASTName);
assertEquals("operator new[]", ((IASTName)node).toString()); //$NON-NLS-1$
assertEquals(hcode.indexOf("operator new"), ((ASTNode)node).getOffset());
assertEquals(16, ((ASTNode)node).getLength());
assertEquals(((IASTName)node).toString(), "operator new[]"); //$NON-NLS-1$
assertEquals(((ASTNode)node).getOffset(), hcode.indexOf("operator new"));
assertEquals(((ASTNode)node).getLength(), 16);
offset = scode.indexOf("p2-> operator") + 11; //$NON-NLS-1$
node = testF3(file, offset);
assertTrue(node instanceof IASTName);
assertEquals("operator =", ((IASTName)node).toString()); //$NON-NLS-1$
assertEquals(hcode.indexOf("operator="), ((ASTNode)node).getOffset());
assertEquals(9, ((ASTNode)node).getLength());
assertEquals(((IASTName)node).toString(), "operator ="); //$NON-NLS-1$
assertEquals(((ASTNode)node).getOffset(), hcode.indexOf("operator="));
assertEquals(((ASTNode)node).getLength(), 9);
}
// template <class T>
@ -172,9 +172,9 @@ public abstract class CPPSelectionTestsAnyIndexer extends BaseSelectionTestsInde
int soffset = scode.indexOf("testTemplate");
IASTNode def = testF3(file, soffset+2);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName)def).toString(), "testTemplate"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), hoffset);
assertEquals(((ASTNode)def).getLength(), 12);
assertEquals("testTemplate", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode) def).getOffset());
assertEquals(12, ((ASTNode) def).getLength());
}
// template<typename T>
@ -198,9 +198,9 @@ public abstract class CPPSelectionTestsAnyIndexer extends BaseSelectionTestsInde
int soffset = scode.indexOf("assign"); //$NON-NLS-1$
IASTNode def = testF3(file, soffset + 2);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName) def).toString(), "assign"); //$NON-NLS-1$
assertEquals(((ASTNode) def).getOffset(), hoffset);
assertEquals(((ASTNode) def).getLength(), 6);
assertEquals("assign", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode) def).getOffset());
assertEquals(6, ((ASTNode) def).getLength());
}
// // the header
@ -231,12 +231,12 @@ public abstract class CPPSelectionTestsAnyIndexer extends BaseSelectionTestsInde
IASTNode def = testF3(hfile, hoffset+2);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyInt"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), hoffset);
assertEquals(((ASTNode)decl).getLength(), 5);
assertEquals(((IASTName)def).toString(), "MyInt"); //$NON-NLS-1$
assertEquals("MyInt", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode) decl).getOffset());
assertEquals(5, ((ASTNode) decl).getLength());
assertEquals("MyInt", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(soffset, def.getFileLocation().getNodeOffset());
assertEquals(((ASTNode)def).getLength(), 5);
assertEquals(5, ((ASTNode) def).getLength());
hoffset= hcode.indexOf("MyConst");
soffset = scode.indexOf("MyConst");
@ -244,12 +244,12 @@ public abstract class CPPSelectionTestsAnyIndexer extends BaseSelectionTestsInde
def = testF3(hfile, hoffset+2);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyConst"); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode)decl).getOffset());
assertEquals(((ASTNode)decl).getLength(), 7);
assertEquals(((IASTName)def).toString(), "MyConst"); //$NON-NLS-1$
assertEquals("MyConst", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode) decl).getOffset());
assertEquals(7, ((ASTNode) decl).getLength());
assertEquals("MyConst", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(soffset, def.getFileLocation().getNodeOffset());
assertEquals(((ASTNode)def).getLength(), 7);
assertEquals(7, ((ASTNode) def).getLength());
hoffset= hcode.indexOf("MyFunc");
soffset = scode.indexOf("MyFunc");
@ -257,12 +257,12 @@ public abstract class CPPSelectionTestsAnyIndexer extends BaseSelectionTestsInde
def = testF3(hfile, hoffset+2);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyFunc"); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode)decl).getOffset());
assertEquals(((ASTNode)decl).getLength(), 6);
assertEquals(((IASTName)def).toString(), "MyFunc"); //$NON-NLS-1$
assertEquals("MyFunc", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode) decl).getOffset());
assertEquals(6, ((ASTNode) decl).getLength());
assertEquals("MyFunc", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(soffset, def.getFileLocation().getNodeOffset());
assertEquals(((ASTNode)def).getLength(), 6);
assertEquals(6, ((ASTNode) def).getLength());
hoffset= hcode.indexOf("MyStruct");
soffset = scode.indexOf("MyStruct");
@ -270,12 +270,12 @@ public abstract class CPPSelectionTestsAnyIndexer extends BaseSelectionTestsInde
def = testF3(hfile, hoffset+2);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyStruct"); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode)decl).getOffset());
assertEquals(((ASTNode)decl).getLength(), 8);
assertEquals(((IASTName)def).toString(), "MyStruct"); //$NON-NLS-1$
assertEquals(soffset, def.getFileLocation().getNodeOffset());
assertEquals(((ASTNode)def).getLength(), 8);
assertEquals("MyStruct", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode) decl).getOffset());
assertEquals(8, ((ASTNode) decl).getLength());
assertEquals("MyStruct", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(hoffset, def.getFileLocation().getNodeOffset());
assertEquals(8, ((ASTNode) def).getLength());
hoffset= hcode.indexOf("MyClass");
soffset = scode.indexOf("MyClass");
@ -283,12 +283,12 @@ public abstract class CPPSelectionTestsAnyIndexer extends BaseSelectionTestsInde
def = testF3(hfile, hoffset+2);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyClass"); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode)decl).getOffset());
assertEquals(((ASTNode)decl).getLength(), 7);
assertEquals(((IASTName)def).toString(), "MyClass"); //$NON-NLS-1$
assertEquals(soffset, def.getFileLocation().getNodeOffset());
assertEquals(((ASTNode)def).getLength(), 7);
assertEquals("MyClass", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode) decl).getOffset());
assertEquals(7, ((ASTNode) decl).getLength());
assertEquals("MyClass", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(hoffset, def.getFileLocation().getNodeOffset());
assertEquals(7, ((ASTNode) def).getLength());
}
// // the header
@ -310,14 +310,14 @@ public abstract class CPPSelectionTestsAnyIndexer extends BaseSelectionTestsInde
int soffset = scode.indexOf("AAA<int>"); //$NON-NLS-1$
IASTNode decl1 = testF3(file, soffset, 3);
assertTrue(decl1 instanceof IASTName);
assertEquals(((IASTName)decl1).toString(), "AAA"); //$NON-NLS-1$
assertEquals("AAA", ((IASTName) decl1).toString()); //$NON-NLS-1$
assertEquals(hoffset, decl1.getFileLocation().getNodeOffset());
assertEquals(((ASTNode)decl1).getLength(), 3);
assertEquals(3, ((ASTNode) decl1).getLength());
IASTNode decl2 = testF3(file, soffset, 8);
assertEquals(((IASTName)decl2).toString(), "AAA"); //$NON-NLS-1$
assertEquals("AAA", ((IASTName) decl2).toString()); //$NON-NLS-1$
assertEquals(hoffset, decl2.getFileLocation().getNodeOffset());
assertEquals(((ASTNode)decl2).getLength(), 3);
assertEquals(3, ((ASTNode) decl2).getLength());
}
// // the header
@ -344,9 +344,9 @@ public abstract class CPPSelectionTestsAnyIndexer extends BaseSelectionTestsInde
int doffset= hcode.indexOf("X(int)");
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "X"); //$NON-NLS-1$
assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(doffset, decl.getFileLocation().getNodeOffset());
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals(1, ((ASTNode) decl).getLength());
}
// // the header
@ -376,9 +376,9 @@ public abstract class CPPSelectionTestsAnyIndexer extends BaseSelectionTestsInde
int doffset = hcode.indexOf("X()");
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals("X", decl.toString());
assertEquals(decl.toString(), "X");
assertEquals(doffset, decl.getFileLocation().getNodeOffset());
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals(1, ((ASTNode) decl).getLength());
}
// // the header
@ -453,7 +453,7 @@ public abstract class CPPSelectionTestsAnyIndexer extends BaseSelectionTestsInde
offset1= scode.indexOf("S;");
int offset2= scode.indexOf("S", offset1);
decl= testF3(hfile, offset0);
assertNode("S", offset1, decl);
assertNode("S", offset0, decl);
decl= testF3(file, offset1);
assertNode("S", offset0, decl);
decl= testF3(file, offset2);
@ -1001,7 +1001,7 @@ public abstract class CPPSelectionTestsAnyIndexer extends BaseSelectionTestsInde
testF3(file, offset1);
IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
IEditorInput input = part.getEditorInput();
assertEquals("aheader.h", ((FileEditorInput)input).getFile().getName());
assertEquals("aheader.h", ((FileEditorInput) input).getFile().getName());
}
// void cfunc();
@ -1028,18 +1028,18 @@ public abstract class CPPSelectionTestsAnyIndexer extends BaseSelectionTestsInde
testF3(cppfile, offset1);
IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
IEditorInput input = part.getEditorInput();
assertEquals("s.c", ((FileEditorInput)input).getFile().getName());
assertEquals("s.c", ((FileEditorInput) input).getFile().getName());
testF3(cppfile, offset2);
part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
input = part.getEditorInput();
assertEquals("s.c", ((FileEditorInput)input).getFile().getName());
assertEquals("s.c", ((FileEditorInput) input).getFile().getName());
offset1 = ccode.indexOf("cxcpp");
testF3(cfile, offset1);
part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
input = part.getEditorInput();
assertEquals("s.cpp", ((FileEditorInput)input).getFile().getName());
assertEquals("s.cpp", ((FileEditorInput) input).getFile().getName());
}
// void cxcpp();
@ -1066,18 +1066,18 @@ public abstract class CPPSelectionTestsAnyIndexer extends BaseSelectionTestsInde
testF3(cfile, offset1);
IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
IEditorInput input = part.getEditorInput();
assertEquals("s.cpp", ((FileEditorInput)input).getFile().getName());
assertEquals("s.cpp", ((FileEditorInput) input).getFile().getName());
testF3(cfile, offset2);
part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
input = part.getEditorInput();
assertEquals("s.cpp", ((FileEditorInput)input).getFile().getName());
assertEquals("s.cpp", ((FileEditorInput) input).getFile().getName());
offset1 = scode.indexOf("cxcpp");
testF3(cppfile, offset1);
part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
input = part.getEditorInput();
assertEquals("s.c", ((FileEditorInput)input).getFile().getName());
assertEquals("s.c", ((FileEditorInput) input).getFile().getName());
}
// #define ADD_TEXT(txt1,txt2) txt1" "txt2
@ -1169,8 +1169,8 @@ public abstract class CPPSelectionTestsAnyIndexer extends BaseSelectionTestsInde
int soffset = scode.indexOf("+"); //$NON-NLS-1$
IASTNode def = testF3(file, soffset + 1);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName) def).toString(), "operator +"); //$NON-NLS-1$
assertEquals(((ASTNode) def).getOffset(), hoffset);
assertEquals(((ASTNode) def).getLength(), 9);
assertEquals("operator +", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode) def).getOffset());
assertEquals(9, ((ASTNode) def).getLength());
}
}

View file

@ -314,17 +314,17 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
IASTNode node = testF3(file, offset);
assertTrue(node instanceof IASTName);
assertEquals(((IASTName)node).toString(), "operator new[]"); //$NON-NLS-1$
assertEquals(((ASTNode)node).getOffset(), 183);
assertEquals(((ASTNode)node).getLength(), 16);
assertEquals("operator new[]", ((IASTName)node).toString()); //$NON-NLS-1$
assertEquals(183, ((ASTNode)node).getOffset());
assertEquals(16, ((ASTNode)node).getLength());
offset = code.indexOf("p2-> operator") + 11; //$NON-NLS-1$
node = testF3(file, offset);
assertTrue(node instanceof IASTName);
assertEquals(((IASTName)node).toString(), "operator ="); //$NON-NLS-1$
assertEquals(((ASTNode)node).getOffset(), 121);
assertEquals(((ASTNode)node).getLength(), 9);
assertEquals("operator =", ((IASTName)node).toString()); //$NON-NLS-1$
assertEquals(121, ((ASTNode)node).getOffset());
assertEquals(9, ((ASTNode)node).getLength());
}
public void testBasicDefinition() throws Exception {
@ -350,12 +350,12 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
IASTNode decl = testF3(file, defOffset);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyInt"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 11);
assertEquals(((ASTNode)decl).getLength(), 5);
assertEquals(((IASTName)def).toString(), "MyInt"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 330);
assertEquals(((ASTNode)def).getLength(), 5);
assertEquals("MyInt", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(11, ((ASTNode) decl).getOffset());
assertEquals(5, ((ASTNode) decl).getLength());
assertEquals("MyInt", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(330, ((ASTNode) def).getOffset());
assertEquals(5, ((ASTNode) def).getLength());
offset= code.indexOf("MyConst") + 2;
defOffset= code.indexOf("MyConst", offset) + 2;
@ -363,12 +363,12 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
decl = testF3(file, defOffset);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyConst"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 69);
assertEquals(((ASTNode)decl).getLength(), 7);
assertEquals(((IASTName)def).toString(), "MyConst"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 354);
assertEquals(((ASTNode)def).getLength(), 7);
assertEquals("MyConst", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(69, ((ASTNode) decl).getOffset());
assertEquals(7, ((ASTNode) decl).getLength());
assertEquals("MyConst", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(354, ((ASTNode) def).getOffset());
assertEquals(7, ((ASTNode) def).getLength());
offset= code.indexOf("MyFunc") + 2;
defOffset= code.indexOf("MyFunc", offset) + 2;
@ -376,12 +376,12 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
decl = testF3(file, defOffset);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyFunc"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 115);
assertEquals(((ASTNode)decl).getLength(), 6);
assertEquals(((IASTName)def).toString(), "MyFunc"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 373);
assertEquals(((ASTNode)def).getLength(), 6);
assertEquals("MyFunc", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(115, ((ASTNode) decl).getOffset());
assertEquals(6, ((ASTNode) decl).getLength());
assertEquals("MyFunc", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(373, ((ASTNode) def).getOffset());
assertEquals(6, ((ASTNode) def).getLength());
offset= code.indexOf("MyStruct") + 2;
defOffset= code.indexOf("MyStruct", offset) + 2;
@ -389,12 +389,12 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
decl = testF3(file, defOffset);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyStruct"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 171);
assertEquals(((ASTNode)decl).getLength(), 8);
assertEquals(((IASTName)def).toString(), "MyStruct"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 417);
assertEquals(((ASTNode)def).getLength(), 8);
assertEquals("MyStruct", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(417, ((ASTNode) decl).getOffset());
assertEquals(8, ((ASTNode) decl).getLength());
assertEquals("MyStruct", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(417, ((ASTNode) def).getOffset());
assertEquals(8, ((ASTNode) def).getLength());
offset= code.indexOf("MyClass") + 2;
defOffset= code.indexOf("MyClass", offset) + 2;
@ -402,12 +402,12 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
decl = testF3(file, defOffset);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyClass"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 278);
assertEquals(((ASTNode)decl).getLength(), 7);
assertEquals(((IASTName)def).toString(), "MyClass"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 463);
assertEquals(((ASTNode)def).getLength(), 7);
assertEquals("MyClass", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(463, ((ASTNode) decl).getOffset());
assertEquals(7, ((ASTNode) decl).getLength());
assertEquals("MyClass", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(463, ((ASTNode) def).getOffset());
assertEquals(7, ((ASTNode) def).getLength());
}
public void testBug95224() throws Exception{
@ -424,9 +424,9 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
int offset = code.indexOf("A(); // open definition "); //$NON-NLS-1$
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "~A"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 65);
assertEquals(((ASTNode)decl).getLength(), 2);
assertEquals("~A", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(65, ((ASTNode) decl).getOffset());
assertEquals(2, ((ASTNode) decl).getLength());
}
public void testBasicTemplateInstance() throws Exception{
@ -442,15 +442,15 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
int offset = code.indexOf("AAA<int>"); //$NON-NLS-1$
IASTNode decl1 = testF3(file, offset, 3);
assertTrue(decl1 instanceof IASTName);
assertEquals(((IASTName)decl1).toString(), "AAA"); //$NON-NLS-1$
assertEquals(((ASTNode)decl1).getOffset(), 74);
assertEquals(((ASTNode)decl1).getLength(), 3);
assertEquals("AAA", ((IASTName) decl1).toString()); //$NON-NLS-1$
assertEquals(74, ((ASTNode) decl1).getOffset());
assertEquals(3, ((ASTNode) decl1).getLength());
IASTNode decl2 = testF3(file, offset, 8);
assertTrue(decl2 instanceof IASTName);
assertEquals(((IASTName)decl2).toString(), "AAA"); //$NON-NLS-1$
assertEquals(((ASTNode)decl2).getOffset(), 74);
assertEquals(((ASTNode)decl2).getLength(), 3);
assertEquals("AAA", ((IASTName) decl2).toString()); //$NON-NLS-1$
assertEquals(74, ((ASTNode) decl2).getOffset());
assertEquals(3, ((ASTNode) decl2).getLength());
}
public void testBug86829A() throws Exception {
@ -471,9 +471,9 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
int offset = code.indexOf("X(2)"); //$NON-NLS-1$
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "X"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 18);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(18, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
}
public void testBug86829B() throws Exception {
@ -497,9 +497,9 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
int offset = code.indexOf("X(a);"); //$NON-NLS-1$
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "X"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 6);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(6, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
}
// taken from C++ spec 3.1-3:
@ -557,241 +557,241 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
int offset = code.indexOf("a; // defines a"); //$NON-NLS-1$
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "a"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 512);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(512, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("c = 1; // defines c"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "c"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 546);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("c", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(546, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("f(int x) { return x+a; } // defines f and defines x"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "f"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 567);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("f", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(567, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("x) { return x+a; } // defines f and defines x"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "x"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 67);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(67, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("x+a; } // defines f and defines x"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "x"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 67);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(67, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("x+a; } // defines f and defines x"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "x"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 67);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(67, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("a; } // defines f and defines x"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "a"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 4);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(4, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("S { int a; int b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "S"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 596);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("S", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(120, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("a; int b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "a"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 128);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(128, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "b"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 135);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("b", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(135, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("X { // defines X"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "X"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 177);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(177, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("x; // defines nonstatic data member x"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "x"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 198);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(198, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
IASTNode def;
offset = code.indexOf("y; // declares static data member y"); //$NON-NLS-1$
def = testF3(file, offset);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName)def).toString(), "y"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 337);
assertEquals(((ASTNode)def).getLength(), 1);
assertEquals("y", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(337, ((ASTNode) def).getOffset());
assertEquals(1, ((ASTNode) def).getLength());
offset = code.indexOf("X(): x(0) { } // defines a constructor of X"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "X"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 283);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(283, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("x(0) { } // defines a constructor of X"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "x"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 198);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(198, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("X::y = 1; // defines X::y"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "X"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 177);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(177, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("y = 1; // defines X::y"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "y"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 247);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("y", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(247, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("up, down }; // defines up and down"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "up"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 367);
assertEquals(((ASTNode)decl).getLength(), 2);
assertEquals("up", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(367, ((ASTNode) decl).getOffset());
assertEquals(2, ((ASTNode) decl).getLength());
offset = code.indexOf("down }; // defines up and down"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "down"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 371);
assertEquals(((ASTNode)decl).getLength(), 4);
assertEquals("down", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(371, ((ASTNode) decl).getOffset());
assertEquals(4, ((ASTNode) decl).getLength());
offset = code.indexOf("N { int d; } // defines N and N::d"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "N"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 412);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("N", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(412, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("d; } // defines N and N::d"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "d"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 420);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("d", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(420, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("N1 = N; // defines N1"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "N1"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 457);
assertEquals(((ASTNode)decl).getLength(), 2);
assertEquals("N1", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(457, ((ASTNode) decl).getOffset());
assertEquals(2, ((ASTNode) decl).getLength());
offset = code.indexOf("N; // defines N1"); //$NON-NLS-1$
def = testF3(file, offset);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName)def).toString(), "N"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 412);
assertEquals(((ASTNode)def).getLength(), 1);
assertEquals("N", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(412, ((ASTNode) def).getOffset());
assertEquals(1, ((ASTNode) def).getLength());
offset = code.indexOf("X anX; // defines anX"); //$NON-NLS-1$
def = testF3(file, offset);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName)def).toString(), "X"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 177);
assertEquals(((ASTNode)def).getLength(), 1);
assertEquals("X", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(177, ((ASTNode) def).getOffset());
assertEquals(1, ((ASTNode) def).getLength());
offset = code.indexOf("anX; // defines anX"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "anX"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 481);
assertEquals(((ASTNode)decl).getLength(), 3);
assertEquals("anX", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(481, ((ASTNode) decl).getOffset());
assertEquals(3, ((ASTNode) decl).getLength());
offset = code.indexOf("a; // declares a"); //$NON-NLS-1$
def = testF3(file, offset);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName)def).toString(), "a"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 4);
assertEquals(((ASTNode)def).getLength(), 1);
assertEquals("a", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(4, ((ASTNode) def).getOffset());
assertEquals(1, ((ASTNode) def).getLength());
offset = code.indexOf("c; // declares c"); //$NON-NLS-1$
def = testF3(file, offset);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName)def).toString(), "c"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 37);
assertEquals(((ASTNode)def).getLength(), 1);
assertEquals("c", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(37, ((ASTNode) def).getOffset());
assertEquals(1, ((ASTNode) def).getLength());
offset = code.indexOf("f(int y); // declar f"); //$NON-NLS-1$
def = testF3(file, offset);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName)def).toString(), "f"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 61);
assertEquals(((ASTNode)def).getLength(), 1);
assertEquals("f", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(61, ((ASTNode) def).getOffset());
assertEquals(1, ((ASTNode) def).getLength());
offset = code.indexOf("S; // declares S"); //$NON-NLS-1$
def = testF3(file, offset);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName)def).toString(), "S"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 120);
assertEquals(((ASTNode)def).getLength(), 1);
assertEquals("S", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(120, ((ASTNode) def).getOffset());
assertEquals(1, ((ASTNode) def).getLength());
offset = code.indexOf("Int; // declares Int"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "Int"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 625);
assertEquals(((ASTNode)decl).getLength(), 3);
assertEquals("Int", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(625, ((ASTNode) decl).getOffset());
assertEquals(3, ((ASTNode) decl).getLength());
offset = code.indexOf("X anotherX; // declares anotherX"); //$NON-NLS-1$
def = testF3(file, offset);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName)def).toString(), "X"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 177);
assertEquals(((ASTNode)def).getLength(), 1);
assertEquals("X", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(177, ((ASTNode) def).getOffset());
assertEquals(1, ((ASTNode) def).getLength());
offset = code.indexOf("anotherX; // declares anotherX"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "anotherX"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 655);
assertEquals(((ASTNode)decl).getLength(), 8);
assertEquals("anotherX", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(655, ((ASTNode) decl).getOffset());
assertEquals(8, ((ASTNode) decl).getLength());
offset = code.indexOf("N::d; // declares N::d"); //$NON-NLS-1$
def = testF3(file, offset);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName)def).toString(), "N"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 412);
assertEquals(((ASTNode)def).getLength(), 1);
assertEquals("N", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(412, ((ASTNode) def).getOffset());
assertEquals(1, ((ASTNode) def).getLength());
offset = code.indexOf("d; // declares N::d"); //$NON-NLS-1$
def = testF3(file, offset);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName)def).toString(), "d"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 420);
assertEquals(((ASTNode)def).getLength(), 1);
assertEquals("d", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(420, ((ASTNode) def).getOffset());
assertEquals(1, ((ASTNode) def).getLength());
}
public void testBug95225() throws Exception {
@ -819,16 +819,16 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
int offset = code.indexOf("rflow('+',x,3.45e107);"); //$NON-NLS-1$
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "Overflow"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 25);
assertEquals(((ASTNode)decl).getLength(), 8);
assertEquals("Overflow", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(25, ((ASTNode) decl).getOffset());
assertEquals(8, ((ASTNode) decl).getLength());
offset = code.indexOf("x,3.45e107);"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "x"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 72);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(72, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
}
public void testNoDefinitions() throws Exception {
@ -845,37 +845,37 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
int offset = code.indexOf("a1; // declares a"); //$NON-NLS-1$
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "a1"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 11);
assertEquals(((ASTNode)decl).getLength(), 2);
assertEquals("a1", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(11, ((ASTNode) decl).getOffset());
assertEquals(2, ((ASTNode) decl).getLength());
offset = code.indexOf("c1; // declares c"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "c1"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 46);
assertEquals(((ASTNode)decl).getLength(), 2);
assertEquals("c1", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(46, ((ASTNode) decl).getOffset());
assertEquals(2, ((ASTNode) decl).getLength());
offset = code.indexOf("f1(int); // declares f"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "f1"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 68);
assertEquals(((ASTNode)decl).getLength(), 2);
assertEquals("f1", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(68, ((ASTNode) decl).getOffset());
assertEquals(2, ((ASTNode) decl).getLength());
offset = code.indexOf("S1; // declares S"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "S1"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 98);
assertEquals(((ASTNode)decl).getLength(), 2);
assertEquals("S1", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(98, ((ASTNode) decl).getOffset());
assertEquals(2, ((ASTNode) decl).getLength());
offset = code.indexOf("Int; // declares Int"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "Int"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 128);
assertEquals(((ASTNode)decl).getLength(), 3);
assertEquals("Int", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(128, ((ASTNode) decl).getOffset());
assertEquals(3, ((ASTNode) decl).getLength());
}
public void testBug95202() throws Exception {
@ -895,9 +895,9 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
int offset = code.indexOf("s); // wellformed"); //$NON-NLS-1$
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "s"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 117);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("s", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(117, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
}
public void testBug95229() throws Exception {
@ -915,9 +915,9 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
int offset = code.indexOf("rator short(); // F3"); //$NON-NLS-1$
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "operator short int"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 11);
assertEquals(((ASTNode)decl).getLength(), 14);
assertEquals("operator short int", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(11, ((ASTNode) decl).getOffset());
assertEquals(14, ((ASTNode) decl).getLength());
}
public void testBug78354() throws Exception {
@ -937,9 +937,9 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
int offset = code.indexOf("TestTypeOne myFirstLink = 5;"); //$NON-NLS-1$
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "TestTypeOne"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 12);
assertEquals(((ASTNode)decl).getLength(), 11);
assertEquals("TestTypeOne", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(12, ((ASTNode) decl).getOffset());
assertEquals(11, ((ASTNode) decl).getLength());
}
public void testBug103697() throws Exception {
@ -955,9 +955,9 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
int offset = code.indexOf("return x;\n") + "return ".length(); //$NON-NLS-1$ //$NON-NLS-2$
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "x"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 4);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(4, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
}
public void testBug76043() throws Exception {
@ -975,9 +975,9 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
int offset = code.indexOf("return x;\n") + "return ".length(); //$NON-NLS-1$ //$NON-NLS-2$
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "x"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 4);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(4, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
}
// typedef int (*functionPointer)(int);
@ -998,8 +998,8 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
IASTNode decl = testF3(file, or1);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "functionPointer"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), od1);
assertEquals("functionPointer", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(od1, ((ASTNode) decl).getOffset());
IEditorPart editor= PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
assertNotNull(editor);
@ -1011,8 +1011,8 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
decl = testF3(file, code.length() + or2);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "functionPointerArray");
assertEquals(((ASTNode)decl).getOffset(), code.length() + od2);
assertEquals("functionPointerArray", ((IASTName) decl).toString());
assertEquals(code.length() + od2, ((ASTNode) decl).getOffset());
}
}
@ -1028,8 +1028,8 @@ public class CPPSelectionTestsNoIndexer extends BaseUITestCase {
IASTNode decl = testF3(file, or1);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "EMPTY"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), od1);
assertEquals("EMPTY", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(od1, ((ASTNode) decl).getOffset());
}
}

View file

@ -75,7 +75,7 @@ public abstract class CSelectionTestsAnyIndexer extends BaseSelectionTestsIndexe
private void assertNode(String name, int offset, IASTNode node) {
assertNotNull(node);
assertEquals(name, node.toString());
assertEquals(node.toString(), name);
IASTFileLocation loc= node.getFileLocation();
assertEquals(offset, loc.getNodeOffset());
assertEquals(name.length(), loc.getNodeLength());
@ -107,12 +107,12 @@ public abstract class CSelectionTestsAnyIndexer extends BaseSelectionTestsIndexe
IASTNode def = testF3(hfile, hoffset+2);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyInt"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), hoffset);
assertEquals(((ASTNode)decl).getLength(), 5);
assertEquals(((IASTName)def).toString(), "MyInt"); //$NON-NLS-1$
assertEquals("MyInt", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode) decl).getOffset());
assertEquals(5, ((ASTNode) decl).getLength());
assertEquals("MyInt", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(soffset, def.getFileLocation().getNodeOffset());
assertEquals(((ASTNode)def).getLength(), 5);
assertEquals(5, ((ASTNode) def).getLength());
hoffset= hcode.indexOf("MyConst");
soffset = scode.indexOf("MyConst");
@ -120,12 +120,12 @@ public abstract class CSelectionTestsAnyIndexer extends BaseSelectionTestsIndexe
def = testF3(hfile, hoffset+2);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyConst"); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode)decl).getOffset());
assertEquals(((ASTNode)decl).getLength(), 7);
assertEquals(((IASTName)def).toString(), "MyConst"); //$NON-NLS-1$
assertEquals("MyConst", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode) decl).getOffset());
assertEquals(7, ((ASTNode) decl).getLength());
assertEquals("MyConst", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(soffset, def.getFileLocation().getNodeOffset());
assertEquals(((ASTNode)def).getLength(), 7);
assertEquals(7, ((ASTNode) def).getLength());
hoffset= hcode.indexOf("MyFunc");
soffset = scode.indexOf("MyFunc");
@ -133,12 +133,12 @@ public abstract class CSelectionTestsAnyIndexer extends BaseSelectionTestsIndexe
def = testF3(hfile, hoffset+2);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyFunc"); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode)decl).getOffset());
assertEquals(((ASTNode)decl).getLength(), 6);
assertEquals(((IASTName)def).toString(), "MyFunc"); //$NON-NLS-1$
assertEquals("MyFunc", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode) decl).getOffset());
assertEquals(6, ((ASTNode) decl).getLength());
assertEquals("MyFunc", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(soffset, def.getFileLocation().getNodeOffset());
assertEquals(((ASTNode)def).getLength(), 6);
assertEquals(6, ((ASTNode) def).getLength());
hoffset= hcode.indexOf("MyStruct");
soffset = scode.indexOf("MyStruct");
@ -146,12 +146,12 @@ public abstract class CSelectionTestsAnyIndexer extends BaseSelectionTestsIndexe
def = testF3(hfile, hoffset+2);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyStruct"); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode)decl).getOffset());
assertEquals(((ASTNode)decl).getLength(), 8);
assertEquals(((IASTName)def).toString(), "MyStruct"); //$NON-NLS-1$
assertEquals(soffset, def.getFileLocation().getNodeOffset());
assertEquals(((ASTNode)def).getLength(), 8);
assertEquals("MyStruct", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(hoffset, ((ASTNode) decl).getOffset());
assertEquals(8, ((ASTNode) decl).getLength());
assertEquals("MyStruct", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(hoffset, def.getFileLocation().getNodeOffset());
assertEquals(8, ((ASTNode) def).getLength());
}
@ -221,7 +221,7 @@ public abstract class CSelectionTestsAnyIndexer extends BaseSelectionTestsIndexe
offset1= scode.indexOf("S;");
int offset2= scode.indexOf("S", offset1);
decl= testF3(hfile, offset0);
assertNode("S", offset1, decl);
assertNode("S", offset0, decl);
decl= testF3(file, offset1);
assertNode("S", offset0, decl);
decl= testF3(file, offset2);
@ -497,7 +497,7 @@ public abstract class CSelectionTestsAnyIndexer extends BaseSelectionTestsIndexe
testF3(file, offset1);
IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
IEditorInput input = part.getEditorInput();
assertEquals("aheader.h", ((FileEditorInput)input).getFile().getName());
assertEquals("aheader.h", ((FileEditorInput) input).getFile().getName());
}
// #define DR_NUM_DIMENSIONS(DR) VEC_length (tree, DR_ACCESS_FNS (DR))
@ -517,7 +517,7 @@ public abstract class CSelectionTestsAnyIndexer extends BaseSelectionTestsIndexe
testF3(hfile, offset1);
IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
IEditorInput input = part.getEditorInput();
assertEquals("source.c", ((FileEditorInput)input).getFile().getName());
assertEquals("source.c", ((FileEditorInput) input).getFile().getName());
}
// int myFunc();
@ -547,5 +547,4 @@ public abstract class CSelectionTestsAnyIndexer extends BaseSelectionTestsIndexe
assertTrue(name.isDefinition());
assertEquals("myFunc", name.toString());
}
}

View file

@ -326,12 +326,12 @@ public class CSelectionTestsNoIndexer extends BaseUITestCase {
IASTNode decl = testF3(file, defOffset);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyInt"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 11);
assertEquals(((ASTNode)decl).getLength(), 5);
assertEquals(((IASTName)def).toString(), "MyInt"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 330);
assertEquals(((ASTNode)def).getLength(), 5);
assertEquals("MyInt", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(11, ((ASTNode) decl).getOffset());
assertEquals(5, ((ASTNode) decl).getLength());
assertEquals("MyInt", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(330, ((ASTNode) def).getOffset());
assertEquals(5, ((ASTNode) def).getLength());
offset= code.indexOf("MyConst") + 2;
defOffset= code.indexOf("MyConst", offset) + 2;
@ -339,12 +339,12 @@ public class CSelectionTestsNoIndexer extends BaseUITestCase {
decl = testF3(file, defOffset);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyConst"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 69);
assertEquals(((ASTNode)decl).getLength(), 7);
assertEquals(((IASTName)def).toString(), "MyConst"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 354);
assertEquals(((ASTNode)def).getLength(), 7);
assertEquals("MyConst", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(69, ((ASTNode) decl).getOffset());
assertEquals(7, ((ASTNode) decl).getLength());
assertEquals("MyConst", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(354, ((ASTNode) def).getOffset());
assertEquals(7, ((ASTNode) def).getLength());
offset= code.indexOf("MyFunc") + 2;
defOffset= code.indexOf("MyFunc", offset) + 2;
@ -352,12 +352,12 @@ public class CSelectionTestsNoIndexer extends BaseUITestCase {
decl = testF3(file, defOffset);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyFunc"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 115);
assertEquals(((ASTNode)decl).getLength(), 6);
assertEquals(((IASTName)def).toString(), "MyFunc"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 373);
assertEquals(((ASTNode)def).getLength(), 6);
assertEquals("MyFunc", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(115, ((ASTNode) decl).getOffset());
assertEquals(6, ((ASTNode) decl).getLength());
assertEquals("MyFunc", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(373, ((ASTNode) def).getOffset());
assertEquals(6, ((ASTNode) def).getLength());
offset= code.indexOf("MyStruct") + 2;
defOffset= code.indexOf("MyStruct", offset) + 2;
@ -365,12 +365,12 @@ public class CSelectionTestsNoIndexer extends BaseUITestCase {
decl = testF3(file, defOffset);
assertTrue(def instanceof IASTName);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "MyStruct"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 171);
assertEquals(((ASTNode)decl).getLength(), 8);
assertEquals(((IASTName)def).toString(), "MyStruct"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 417);
assertEquals(((ASTNode)def).getLength(), 8);
assertEquals("MyStruct", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(417, ((ASTNode) decl).getOffset());
assertEquals(8, ((ASTNode) decl).getLength());
assertEquals("MyStruct", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(417, ((ASTNode) def).getOffset());
assertEquals(8, ((ASTNode) def).getLength());
}
// taken from C++ spec 3.1-3:
@ -422,164 +422,164 @@ public class CSelectionTestsNoIndexer extends BaseUITestCase {
int offset = code.indexOf("a; // defines a"); //$NON-NLS-1$
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "a"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 512);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(512, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("c = 1; // defines c"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "c"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 546);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("c", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(546, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("f(int x) { return x+a; } // defines f and defines x"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "f"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 567);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("f", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(567, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("x) { return x+a; } // defines f and defines x"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "x"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 67);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(67, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("x+a; } // defines f and defines x"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "x"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 67);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(67, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("x+a; } // defines f and defines x"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "x"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 67);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(67, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("a; } // defines f and defines x"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "a"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 4);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(4, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("S { int a; int b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "S"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 596);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("S", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(120, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("a; int b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "a"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 128);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(128, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "b"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 135);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("b", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(135, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("X { // defines X"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "X"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 177);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(177, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("x; // defines nonstatic data member x"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "x"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 198);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(198, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
offset = code.indexOf("up, down }; // defines up and down"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "up"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 367);
assertEquals(((ASTNode)decl).getLength(), 2);
assertEquals("up", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(367, ((ASTNode) decl).getOffset());
assertEquals(2, ((ASTNode) decl).getLength());
offset = code.indexOf("down }; // defines up and down"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "down"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 371);
assertEquals(((ASTNode)decl).getLength(), 4);
assertEquals("down", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(371, ((ASTNode) decl).getOffset());
assertEquals(4, ((ASTNode) decl).getLength());
IASTNode def;
offset = code.indexOf("X anX; // defines anX"); //$NON-NLS-1$
def = testF3(file, offset);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName)def).toString(), "X"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 177);
assertEquals(((ASTNode)def).getLength(), 1);
assertEquals("X", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(177, ((ASTNode) def).getOffset());
assertEquals(1, ((ASTNode) def).getLength());
offset = code.indexOf("anX; // defines anX"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "anX"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 481);
assertEquals(((ASTNode)decl).getLength(), 3);
assertEquals("anX", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(481, ((ASTNode) decl).getOffset());
assertEquals(3, ((ASTNode) decl).getLength());
offset = code.indexOf("a; // declares a"); //$NON-NLS-1$
def = testF3(file, offset);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName)def).toString(), "a"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 4);
assertEquals(((ASTNode)def).getLength(), 1);
assertEquals("a", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(4, ((ASTNode) def).getOffset());
assertEquals(1, ((ASTNode) def).getLength());
offset = code.indexOf("c; // declares c"); //$NON-NLS-1$
def = testF3(file, offset);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName)def).toString(), "c"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 37);
assertEquals(((ASTNode)def).getLength(), 1);
assertEquals("c", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(37, ((ASTNode) def).getOffset());
assertEquals(1, ((ASTNode) def).getLength());
offset = code.indexOf("f(int y); // declar f"); //$NON-NLS-1$
def = testF3(file, offset);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName)def).toString(), "f"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 61);
assertEquals(((ASTNode)def).getLength(), 1);
assertEquals("f", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(61, ((ASTNode) def).getOffset());
assertEquals(1, ((ASTNode) def).getLength());
offset = code.indexOf("S; // declares S"); //$NON-NLS-1$
def = testF3(file, offset);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName)def).toString(), "S"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 120);
assertEquals(((ASTNode)def).getLength(), 1);
assertEquals("S", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(120, ((ASTNode) def).getOffset());
assertEquals(1, ((ASTNode) def).getLength());
offset = code.indexOf("Int; // declares Int"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "Int"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 625);
assertEquals(((ASTNode)decl).getLength(), 3);
assertEquals("Int", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(625, ((ASTNode) decl).getOffset());
assertEquals(3, ((ASTNode) decl).getLength());
offset = code.indexOf("X anotherX; // declares anotherX"); //$NON-NLS-1$
def = testF3(file, offset);
assertTrue(def instanceof IASTName);
assertEquals(((IASTName)def).toString(), "X"); //$NON-NLS-1$
assertEquals(((ASTNode)def).getOffset(), 177);
assertEquals(((ASTNode)def).getLength(), 1);
assertEquals("X", ((IASTName) def).toString()); //$NON-NLS-1$
assertEquals(177, ((ASTNode) def).getOffset());
assertEquals(1, ((ASTNode) def).getLength());
offset = code.indexOf("anotherX; // declares anotherX"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "anotherX"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 662);
assertEquals(((ASTNode)decl).getLength(), 8);
assertEquals("anotherX", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(662, ((ASTNode) decl).getOffset());
assertEquals(8, ((ASTNode) decl).getLength());
}
public void testNoDefinitions() throws Exception {
@ -596,37 +596,37 @@ public class CSelectionTestsNoIndexer extends BaseUITestCase {
int offset = code.indexOf("a1; // declares a"); //$NON-NLS-1$
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "a1"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 11);
assertEquals(((ASTNode)decl).getLength(), 2);
assertEquals("a1", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(11, ((ASTNode) decl).getOffset());
assertEquals(2, ((ASTNode) decl).getLength());
offset = code.indexOf("c1; // declares c"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "c1"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 46);
assertEquals(((ASTNode)decl).getLength(), 2);
assertEquals("c1", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(46, ((ASTNode) decl).getOffset());
assertEquals(2, ((ASTNode) decl).getLength());
offset = code.indexOf("f1(int); // declares f"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "f1"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 68);
assertEquals(((ASTNode)decl).getLength(), 2);
assertEquals("f1", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(68, ((ASTNode) decl).getOffset());
assertEquals(2, ((ASTNode) decl).getLength());
offset = code.indexOf("S1; // declares S"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "S1"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 98);
assertEquals(((ASTNode)decl).getLength(), 2);
assertEquals("S1", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(98, ((ASTNode) decl).getOffset());
assertEquals(2, ((ASTNode) decl).getLength());
offset = code.indexOf("Int; // declares Int"); //$NON-NLS-1$
decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "Int"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 128);
assertEquals(((ASTNode)decl).getLength(), 3);
assertEquals("Int", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(128, ((ASTNode) decl).getOffset());
assertEquals(3, ((ASTNode) decl).getLength());
}
public void testBug103697() throws Exception {
@ -642,9 +642,9 @@ public class CSelectionTestsNoIndexer extends BaseUITestCase {
int offset = code.indexOf("return x;\n") + "return ".length(); //$NON-NLS-1$ //$NON-NLS-2$
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "x"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 4);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(4, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
}
public void testBug76043() throws Exception {
@ -662,9 +662,9 @@ public class CSelectionTestsNoIndexer extends BaseUITestCase {
int offset = code.indexOf("return x;\n") + "return ".length(); //$NON-NLS-1$ //$NON-NLS-2$
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "x"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 4);
assertEquals(((ASTNode)decl).getLength(), 1);
assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(4, ((ASTNode) decl).getOffset());
assertEquals(1, ((ASTNode) decl).getLength());
}
public void testBug78354() throws Exception {
@ -684,9 +684,9 @@ public class CSelectionTestsNoIndexer extends BaseUITestCase {
int offset = code.indexOf("TestTypeOne myFirstLink = 5;"); //$NON-NLS-1$
IASTNode decl = testF3(file, offset);
assertTrue(decl instanceof IASTName);
assertEquals(((IASTName)decl).toString(), "TestTypeOne"); //$NON-NLS-1$
assertEquals(((ASTNode)decl).getOffset(), 12);
assertEquals(((ASTNode)decl).getLength(), 11);
assertEquals("TestTypeOne", ((IASTName) decl).toString()); //$NON-NLS-1$
assertEquals(12, ((ASTNode) decl).getOffset());
assertEquals(11, ((ASTNode) decl).getLength());
}
// int myFunc(var)

View file

@ -52,6 +52,7 @@ import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IParameter;
import org.eclipse.cdt.core.dom.ast.IProblemBinding;
import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization;
@ -75,6 +76,7 @@ import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor;
import org.eclipse.cdt.internal.core.index.IIndexFragmentName;
import org.eclipse.cdt.internal.core.model.ASTCache.ASTRunnable;
import org.eclipse.cdt.internal.core.model.ext.CElementHandleFactory;
import org.eclipse.cdt.internal.core.model.ext.ICElementHandle;
@ -88,10 +90,8 @@ import org.eclipse.cdt.internal.ui.viewsupport.IndexUI;
public class OpenDeclarationsAction extends SelectionParseAction implements ASTRunnable {
public static boolean sIsJUnitTest = false;
private static final int KIND_OTHER = 0;
private static final int KIND_USING_DECL = 1;
private static final int KIND_DEFINITION = 2;
private enum NameKind { REFERENCE, DECLARATION, USING_DECL, DEFINITION }
private class WrapperJob extends Job {
WrapperJob() {
@ -158,19 +158,19 @@ public class OpenDeclarationsAction extends SelectionParseAction implements ASTR
final IASTNodeSelector nodeSelector = ast.getNodeSelector(null);
IASTName searchName= nodeSelector.findEnclosingName(selectionStart, selectionLength);
if (searchName == null) {
IASTName sourceName= nodeSelector.findEnclosingName(selectionStart, selectionLength);
if (sourceName == null) {
IASTName implicit = nodeSelector.findEnclosingImplicitName(selectionStart, selectionLength);
if (implicit != null) {
IASTImplicitNameOwner owner = (IASTImplicitNameOwner) implicit.getParent();
IASTImplicitName[] implicits = owner.getImplicitNames();
// there may be more than one name in the same spot
// There may be more than one name in the same spot
if (implicits.length > 0) {
List<IName> allNames = new ArrayList<IName>();
for (IASTImplicitName name : implicits) {
if (((ASTNode) name).getOffset() == ((ASTNode) implicit).getOffset()) {
IBinding binding = name.resolveBinding(); // guaranteed to resolve
IName[] declNames = findDeclNames(ast, KIND_OTHER, binding);
IName[] declNames = findDeclNames(ast, NameKind.REFERENCE, binding);
allNames.addAll(Arrays.asList(declNames));
}
}
@ -180,32 +180,31 @@ public class OpenDeclarationsAction extends SelectionParseAction implements ASTR
}
} else {
boolean found= false;
final IASTNode parent = searchName.getParent();
final IASTNode parent = sourceName.getParent();
if (parent instanceof IASTPreprocessorIncludeStatement) {
openInclude(((IASTPreprocessorIncludeStatement) parent));
return Status.OK_STATUS;
}
IBinding binding = searchName.resolveBinding();
int isKind= KIND_OTHER;
if (searchName.isDefinition()) {
if (binding instanceof ICPPUsingDeclaration) {
isKind= KIND_USING_DECL;
} else {
isKind= KIND_DEFINITION;
}
}
IBinding binding = sourceName.resolveBinding();
NameKind kind = getNameKind(sourceName);
if (binding != null && !(binding instanceof IProblemBinding)) {
IName[] declNames = findDeclNames(ast, isKind, binding);
if (kind == NameKind.DEFINITION && binding instanceof IType) {
// Don't navigate away from a type definition.
// Select the name at the current location instead.
navigateToName(sourceName);
return Status.OK_STATUS;
}
IName[] declNames = findDeclNames(ast, kind, binding);
// Exclude the current location.
for (int i = 0; i < declNames.length; i++) {
if (isSameName(declNames[i], searchName)) {
if (isSameName(declNames[i], sourceName)) {
declNames[i] = null;
} else if (binding instanceof IParameter) {
if (!isInSameFunction(searchName, declNames[i])) {
if (!isInSameFunction(sourceName, declNames[i])) {
declNames[i] = null;
}
} else if (binding instanceof ICPPTemplateParameter) {
if (!isInSameTemplate(searchName, declNames[i])) {
if (!isInSameTemplate(sourceName, declNames[i])) {
declNames[i] = null;
}
}
@ -220,59 +219,85 @@ public class OpenDeclarationsAction extends SelectionParseAction implements ASTR
found = navigateOneLocation(declNames);
}
}
if (!found && !navigationFallBack(ast, searchName, isKind)) {
reportSymbolLookupFailure(new String(searchName.toCharArray()));
if (!found && !navigationFallBack(ast, sourceName, kind)) {
reportSymbolLookupFailure(new String(sourceName.toCharArray()));
}
return Status.OK_STATUS;
}
// no enclosing name, check if we're in an include statement
// No enclosing name, check if we're in an include statement
IASTNode node= nodeSelector.findEnclosingNode(selectionStart, selectionLength);
if (node instanceof IASTPreprocessorIncludeStatement) {
openInclude((IASTPreprocessorIncludeStatement) node);
return Status.OK_STATUS;
}
if (!navigationFallBack(ast, null, KIND_OTHER)) {
if (!navigationFallBack(ast, null, NameKind.REFERENCE)) {
reportSelectionMatchFailure();
}
return Status.OK_STATUS;
}
private boolean isInSameFunction(IASTName name1, IName name2) {
private static NameKind getNameKind(IName name) {
if (name.isDefinition()) {
if (getBinding(name) instanceof ICPPUsingDeclaration) {
return NameKind.USING_DECL;
} else {
return NameKind.DEFINITION;
}
} else if (name.isDeclaration()) {
return NameKind.DECLARATION;
}
return NameKind.REFERENCE;
}
private static IBinding getBinding(IName name) {
if (name instanceof IASTName) {
return ((IASTName) name).resolveBinding();
} else if (name instanceof IIndexFragmentName) {
try {
return ((IIndexFragmentName) name).getBinding();
} catch (CoreException e) {
// Fall through to return null.
}
}
return null;
}
private static boolean isInSameFunction(IASTName name1, IName name2) {
IASTDeclaration decl1 = getEnclosingDeclaration(name1);
IASTDeclaration decl2 = name2 instanceof IASTName ? getEnclosingDeclaration((IASTName) name2) : null;
return decl1 != null && decl1.equals(decl2) || decl1 == null && decl2 == null;
}
private IASTDeclaration getEnclosingDeclaration(IASTNode node) {
private static IASTDeclaration getEnclosingDeclaration(IASTNode node) {
while (node != null && !(node instanceof IASTDeclaration)) {
node= node.getParent();
}
return (IASTDeclaration) node;
}
private boolean isInSameTemplate(IASTName name1, IName name2) {
private static boolean isInSameTemplate(IASTName name1, IName name2) {
IASTDeclaration decl1 = getEnclosingTemplateDeclaration(name1);
IASTDeclaration decl2 = name2 instanceof IASTName ?
getEnclosingTemplateDeclaration((IASTName) name2) : null;
return decl1 != null && decl1.equals(decl2) || decl1 == null && decl2 == null;
}
private IASTDeclaration getEnclosingTemplateDeclaration(IASTNode node) {
private static IASTDeclaration getEnclosingTemplateDeclaration(IASTNode node) {
while (node != null && !(node instanceof ICPPASTTemplateDeclaration)) {
node= node.getParent();
}
return (IASTDeclaration) node;
}
private IName[] findDeclNames(IASTTranslationUnit ast, int isKind, IBinding binding) throws CoreException {
IName[] declNames = findNames(fIndex, ast, isKind, binding);
private IName[] findDeclNames(IASTTranslationUnit ast, NameKind kind, IBinding binding) throws CoreException {
IName[] declNames = findNames(fIndex, ast, kind, binding);
if (declNames.length == 0) {
if (binding instanceof ICPPSpecialization) {
// bug 207320, handle template instances
IBinding specialized= ((ICPPSpecialization) binding).getSpecializedBinding();
if (specialized != null && !(specialized instanceof IProblemBinding)) {
declNames = findNames(fIndex, ast, KIND_DEFINITION, specialized);
declNames = findNames(fIndex, ast, NameKind.DEFINITION, specialized);
}
} else if (binding instanceof ICPPMethod) {
// bug 86829, handle implicit methods.
@ -281,7 +306,7 @@ public class OpenDeclarationsAction extends SelectionParseAction implements ASTR
try {
IBinding clsBinding= method.getClassOwner();
if (clsBinding != null && !(clsBinding instanceof IProblemBinding)) {
declNames= findNames(fIndex, ast, KIND_OTHER, clsBinding);
declNames= findNames(fIndex, ast, NameKind.REFERENCE, clsBinding);
}
} catch (DOMException e) {
// don't log problem bindings.
@ -292,7 +317,7 @@ public class OpenDeclarationsAction extends SelectionParseAction implements ASTR
return declNames;
}
private boolean navigationFallBack(IASTTranslationUnit ast, IASTName sourceName, int isKind) {
private boolean navigationFallBack(IASTTranslationUnit ast, IASTName sourceName, NameKind kind) {
// bug 102643, as a fall-back we look up the selected word in the index
if (fSelectedText != null && fSelectedText.length() > 0) {
try {
@ -319,7 +344,7 @@ public class OpenDeclarationsAction extends SelectionParseAction implements ASTR
}
}
// search the index, also
// Search the index, also
final IndexFilter filter = IndexFilter.getDeclaredBindingFilter(ast.getLinkage().getLinkageID(), false);
final IIndexBinding[] idxBindings = fIndex.findBindings(name, false, filter, fMonitor);
for (IIndexBinding idxBinding : idxBindings) {
@ -328,7 +353,7 @@ public class OpenDeclarationsAction extends SelectionParseAction implements ASTR
}
}
// search for a macro in the index
// Search for a macro in the index
IIndexMacro[] macros= fIndex.findMacros(name, filter, fMonitor);
for (IIndexMacro macro : macros) {
ICElement elem= IndexUI.getCElementForMacro(project, fIndex, macro);
@ -346,11 +371,11 @@ public class OpenDeclarationsAction extends SelectionParseAction implements ASTR
if (!Arrays.equals(qualifiedName, sourceQualifiedName)) {
continue;
}
IName[] names = findNames(fIndex, ast, isKind, binding);
IName[] names = findNames(fIndex, ast, kind, binding);
// Exclude the current location.
for (int i = 0; i < names.length; i++) {
if (sourceName != null && isSameName(names[i], sourceName)) {
names[i] = null;
if (getNameKind(names[i]) == kind) {
names[i] = null; // Don' navigate to a name of the same kind.
}
}
names = (IName[]) ArrayUtil.removeNulls(IName.class, names);
@ -505,17 +530,17 @@ public class OpenDeclarationsAction extends SelectionParseAction implements ASTR
return null;
}
private IName[] findNames(IIndex index, IASTTranslationUnit ast, int isKind, IBinding binding) throws CoreException {
private IName[] findNames(IIndex index, IASTTranslationUnit ast, NameKind kind, IBinding binding) throws CoreException {
IName[] declNames;
if (isKind == KIND_DEFINITION) {
if (kind == NameKind.DEFINITION) {
declNames= findDeclarations(index, ast, binding);
} else {
declNames= findDefinitions(index, ast, isKind, binding);
declNames= findDefinitions(index, ast, kind, binding);
}
if (declNames.length == 0) {
if (isKind == KIND_DEFINITION) {
declNames= findDefinitions(index, ast, isKind, binding);
if (kind == NameKind.DEFINITION) {
declNames= findDefinitions(index, ast, kind, binding);
} else {
declNames= findDeclarations(index, ast, binding);
}
@ -523,7 +548,7 @@ public class OpenDeclarationsAction extends SelectionParseAction implements ASTR
return declNames;
}
private IName[] findDefinitions(IIndex index, IASTTranslationUnit ast, int isKind, IBinding binding) throws CoreException {
private IName[] findDefinitions(IIndex index, IASTTranslationUnit ast, NameKind kind, IBinding binding) throws CoreException {
List<IASTName> declNames= new ArrayList<IASTName>();
declNames.addAll(Arrays.asList(ast.getDefinitionsInAST(binding)));
for (Iterator<IASTName> i = declNames.iterator(); i.hasNext();) {