Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] CModelBuilder adds line numbers + JUnit test

Title: Quick Parser Bugfixes

In this patch, the CModelBuilder assigns line numbers for model elements.

There is a JUnit test to verify that.

Also there is a bug fix for function templates with body.

 

Thanks,

Hoda

Index: model/org/eclipse/cdt/core/model/tests/CModelElementsTests.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/CModelElementsTests.java,v
retrieving revision 1.3
diff -u -r1.3 CModelElementsTests.java
--- model/org/eclipse/cdt/core/model/tests/CModelElementsTests.java	16 Apr 2003 20:32:18 -0000	1.3
+++ model/org/eclipse/cdt/core/model/tests/CModelElementsTests.java	21 Apr 2003 14:11:28 -0000
@@ -120,6 +120,8 @@
 		ArrayList tuPackages = tu.getChildrenOfType(ICElement.C_NAMESPACE);
 		INamespace namespace = (INamespace) tuPackages.get(0);
 		assertEquals(namespace.getElementName(), new String("MyPackage"));
+		assertEquals(namespace.getStartLine(), 8);
+		assertEquals(namespace.getEndLine(), 121);
 		
 		checkClass(namespace);
 				
@@ -142,12 +144,16 @@
 		ArrayList tuIncludes = tu.getChildrenOfType(ICElement.C_INCLUDE);
 		IInclude inc1 = (IInclude) tuIncludes.get(0);
 		assertEquals(inc1.getElementName(), new String("stdio.h"));
+		assertEquals(inc1.getStartLine(), 2);
+		assertEquals(inc1.getEndLine(), 2);
 	}
 	
 	private void checkMacro(IParent tu){
 		ArrayList tuMacros = tu.getChildrenOfType(ICElement.C_MACRO);
 		IMacro mac1 = (IMacro) tuMacros.get(0);
 		assertEquals(mac1.getElementName(), new String("PRINT"));
+		assertEquals(mac1.getStartLine(), 5);
+		assertEquals(mac1.getEndLine(), 5);
 	}
 	
 	private void checkClass(IParent namespace){
@@ -155,12 +161,17 @@
 		ArrayList nsClasses = namespace.getChildrenOfType(ICElement.C_CLASS);		
 		IStructure classHello = (IStructure) nsClasses.get(0);
 		assertEquals(classHello.getElementName(), new String("Hello"));
+		assertEquals(classHello.getStartLine(), 12);
+		assertEquals(classHello.getEndLine(), 53);
 		
 		// Hello --> field: int x
 		ArrayList helloFields = classHello.getChildrenOfType(ICElement.C_FIELD);
 		IField intX = (IField) helloFields.get(0);
 		assertEquals(intX.getElementName(), new String("x"));
 		assertEquals(intX.getTypeName(), new String("int"));
+		assertEquals(intX.getStartLine(), 17);
+		assertEquals(intX.getEndLine(), 17);
+		
 		int xVisibility = intX.getVisibility(); 
 		if (xVisibility != IMember.V_PROTECTED)
 			fail("visibility should be protected!");
@@ -170,6 +181,8 @@
 		IMethod setX = (IMethod) helloMethods.get(0);
 		assertEquals(setX.getElementName(), new String("setX"));
 		assertEquals(setX.getReturnType(), new String("void"));
+		assertEquals(setX.getStartLine(), 19);
+		assertEquals(setX.getEndLine(), 22);
 		int setXNumOfParam = setX.getNumberOfParameters();
 		if(setXNumOfParam != 1)
 			fail("setX should have one parameter!");
@@ -185,7 +198,9 @@
 		ArrayList helloNamespaces = classHello.getChildrenOfType(ICElement.C_NAMESPACE);
 		INamespace myNestedPackage = (INamespace) helloNamespaces.get(0);
 		assertEquals(myNestedPackage.getElementName(), new String("MyNestedPackage"));
-	
+		assertEquals(myNestedPackage.getStartLine(), 25);
+		assertEquals(myNestedPackage.getEndLine(), 52);
+
 		checkParentNestedClass(myNestedPackage);	
 		checkDerivedNestedClass(myNestedPackage);
 	}
@@ -194,17 +209,23 @@
 		ArrayList nestedClasses = myNestedPackage.getChildrenOfType(ICElement.C_CLASS);		
 		IStructure classY = (IStructure) nestedClasses.get(0);
 		assertEquals(classY.getElementName(), new String("Y"));
+		assertEquals(classY.getStartLine(), 28);
+		assertEquals(classY.getEndLine(), 35);
 		
 		// Y ---> constructor: Y
 		ArrayList yMethods = classY.getChildrenOfType(ICElement.C_METHOD_DECLARATION);
 		IMethodDeclaration constructor  = (IMethodDeclaration) yMethods.get(0);
 		assertEquals(constructor.getElementName(), new String("Y"));
 		assertTrue (constructor.isConstructor());
+		assertEquals(constructor.getStartLine(), 32);
+		assertEquals(constructor.getEndLine(), 32);
 		
 		// Y ---> destructor: ~Y
 		IMethodDeclaration destructor  = (IMethodDeclaration) yMethods.get(1);
 		assertEquals(destructor.getElementName(), new String("~Y"));
 		assertTrue (destructor.isDestructor());
+		assertEquals(destructor.getStartLine(), 34);
+		assertEquals(destructor.getEndLine(), 34);
 		// TODO: check for virtual on destructors
 		
 	}
@@ -214,6 +235,8 @@
 		ArrayList nestedClasses = myNestedPackage.getChildrenOfType(ICElement.C_CLASS);		
 		IStructure classX = (IStructure) nestedClasses.get(1);
 		assertEquals(classX.getElementName(), new String("X"));
+		assertEquals(classX.getStartLine(), 38);
+		assertEquals(classX.getEndLine(), 51);
 		// TODO : Check for base classes here
 		
 		// X --> field: B b
@@ -221,6 +244,8 @@
 		IField bB = (IField) xFieldChildren.get(0);
 		assertEquals(bB.getElementName(), new String("b"));
 		assertEquals(bB.getTypeName(), new String("B"));
+		assertEquals(bB.getStartLine(), 42);
+		assertEquals(bB.getEndLine(), 42);
 		int bVisibility = bB.getVisibility(); 
 		if (bVisibility != IMember.V_PRIVATE)
 			fail("visibility should be private!");
@@ -230,12 +255,16 @@
 		IMethod xconstructor  = (IMethod) xMethodChildren.get(0);
 		assertEquals(xconstructor.getElementName(), new String("X"));
 		assertTrue (xconstructor.isConstructor());
+		assertEquals(xconstructor.getStartLine(), 46);
+		assertEquals(xconstructor.getEndLine(), 48);
 
 		// X ---> method declaration: doNothing
 		ArrayList xMethodDeclarations = classX.getChildrenOfType(ICElement.C_METHOD_DECLARATION);
 		IMethodDeclaration xDoNothing = (IMethodDeclaration) xMethodDeclarations.get(0);
 		assertEquals(xDoNothing.getElementName(), new String("doNothing"));
 		assertEquals(xDoNothing.getReturnType(), new String("int"));						
+		assertEquals(xDoNothing.getStartLine(), 50);
+		assertEquals(xDoNothing.getEndLine(), 50);
 	}
 	
 	private void checkEnums(IParent namespace){
@@ -243,6 +272,10 @@
 		ArrayList nsEnums = namespace.getChildrenOfType(ICElement.C_ENUMERATION);		
 		IEnumeration enum = (IEnumeration) nsEnums.get(0);
 		assertEquals(enum.getElementName(), new String(""));
+		int enumstart = enum.getStartLine();
+		int enumend = enum.getEndLine();
+		assertEquals(enum.getStartLine(), 57);
+		assertEquals(enum.getEndLine(), 61);
 	
 		// 	enum ---> enumerator: first
 		ArrayList enumEnumerators = enum.getChildrenOfType(ICElement.C_ENUMERATOR);
@@ -258,6 +291,10 @@
 		// MyPackage ---> enum: MyEnum
 		IEnumeration myEnum = (IEnumeration) nsEnums.get(1);
 		assertEquals(myEnum.getElementName(), new String("MyEnum"));
+		enumstart = myEnum.getStartLine();
+		enumend = myEnum.getEndLine();
+		assertEquals(myEnum.getStartLine(), 64);
+		assertEquals(myEnum.getEndLine(), 67);
 	
 		// 	enum ---> enumerator: first
 		ArrayList myEnumEnumerators = myEnum.getChildrenOfType(ICElement.C_ENUMERATOR);
@@ -277,16 +314,23 @@
 		IVariable var1 = (IVariable) nsVars.get(0);
 		assertEquals(var1.getElementName(), new String("v"));
 		assertEquals(var1.getTypeName(), new String("int"));
+		assertEquals(var1.getStartLine(), 71);
+		assertEquals(var1.getEndLine(), 71);
 		
 		// MyPackage ---> unsigned long vuLong
 		IVariable var2 = (IVariable) nsVars.get(1);
 		assertEquals(var2.getElementName(), new String("vuLong"));
 		assertEquals(var2.getTypeName(), new String("unsigned long "));
+		assertEquals(var2.getStartLine(), 73);
+		assertEquals(var2.getEndLine(), 73);
 		
 		// MyPackage ---> unsigned short vuShort
 		IVariable var3 = (IVariable) nsVars.get(2);
 		assertEquals(var3.getElementName(), new String("vuShort"));
 		assertEquals(var3.getTypeName(), new String("unsigned short "));
+		assertEquals(var3.getStartLine(), 75);
+		assertEquals(var3.getEndLine(), 75);
+		
 	}
 
 	private void checkVariableDeclarations(IParent namespace){
@@ -295,11 +339,15 @@
 		IVariableDeclaration vDecl1 = (IVariableDeclaration) nsVarDecls.get(0);
 		assertEquals(vDecl1.getElementName(), new String("evar"));
 		assertEquals(vDecl1.getTypeName(), new String("int"));
+		assertEquals(vDecl1.getStartLine(), 79);
+		assertEquals(vDecl1.getEndLine(), 79);
 
 		// MyPackage ---> function pointer: orig_malloc_hook
 		IVariableDeclaration vDecl2 = (IVariableDeclaration) nsVarDecls.get(1);
 		assertEquals(vDecl2.getElementName(), new String("orig_malloc_hook"));
 		assertEquals(vDecl2.getTypeName(), new String ("void*(*)(const char*, int, size_t)"));
+		assertEquals(vDecl2.getStartLine(), 81);
+		assertEquals(vDecl2.getEndLine(), 81);
 	}
 	
 	private void checkFunctions(IParent namespace){
@@ -308,11 +356,15 @@
 		IFunctionDeclaration f1 = (IFunctionDeclaration) nsFunctionDeclarations.get(0);
 		assertEquals(f1.getElementName(), new String("foo"));
 		assertEquals(f1.getReturnType(), new String("void"));
+		assertEquals(f1.getStartLine(), 85);
+		assertEquals(f1.getEndLine(), 85);
 		
 		//	MyPackage ---> function: char* foo(int&, char**)
 		IFunctionDeclaration f2 = (IFunctionDeclaration) nsFunctionDeclarations.get(1);
 		assertEquals(f2.getElementName(), new String("foo"));
 		assertEquals(f2.getReturnType(), new String("char*"));
+		assertEquals(f2.getStartLine(), 87);
+		assertEquals(f2.getEndLine(), 88);
 		int fooNumOfParam = f2.getNumberOfParameters();
 		if(fooNumOfParam != 2)
 			fail("foo should have two parameter!");
@@ -325,6 +377,8 @@
 		IFunction f3 = (IFunction) nsFunctions.get(0);		
 		assertEquals(f3.getElementName(), new String("boo"));
 		assertEquals(f3.getReturnType(), new String("void"));
+		assertEquals(f3.getStartLine(), 90);
+		assertEquals(f3.getEndLine(), 92);		
 	}
 
 	private void checkStructs(IParent namespace){
@@ -332,20 +386,29 @@
 		ArrayList nsStructs = namespace.getChildrenOfType(ICElement.C_STRUCT);
 		IStructure struct1 = (IStructure) nsStructs.get(0);
 		assertEquals(struct1.getElementName(), new String ("MyStruct"));
+		assertEquals(struct1.getStartLine(), 95);
+		assertEquals(struct1.getEndLine(), 97);		
 		ArrayList struct1Fields = struct1.getChildrenOfType(ICElement.C_FIELD);
 		IField field1 = (IField) struct1Fields.get(0);
 		assertEquals(field1.getElementName(), new String("sint"));
 		assertEquals(field1.getTypeName(), new String("int"));
+		assertEquals(field1.getStartLine(), 96);
+		assertEquals(field1.getEndLine(), 96);		
+		
 		if(field1.getVisibility() != IMember.V_PUBLIC)
 			fail("field visibility should be public!");
 		
 		// struct no name
 		IStructure struct2 = (IStructure) nsStructs.get(1);
 		assertEquals(struct2.getElementName(), new String (""));
+		assertEquals(struct2.getStartLine(), 101);
+		assertEquals(struct2.getEndLine(), 103);		
 		ArrayList struct2Fields = struct2.getChildrenOfType(ICElement.C_FIELD);
 		IField field2 = (IField) struct2Fields.get(0);
 		assertEquals(field2.getElementName(), new String("ss"));
 		assertEquals(field2.getTypeName(), new String("int"));
+		assertEquals(field2.getStartLine(), 102);
+		assertEquals(field2.getEndLine(), 102);		
 		if(field2.getVisibility() != IMember.V_PUBLIC)
 			fail("field visibility should be public!");
 		
@@ -354,18 +417,26 @@
 		ITypeDef td1 = (ITypeDef) nsTypeDefs.get(0);
 		assertEquals(td1.getElementName(), new String ("myStruct"));
 		assertEquals(td1.getTypeName(), new String ("struct MyStruct"));
+		assertEquals(td1.getStartLine(), 99);
+		assertEquals(td1.getEndLine(), 99);
 		ITypeDef td2 = (ITypeDef) nsTypeDefs.get(1);
 		assertEquals(td2.getElementName(), new String ("myTypedef"));
 		assertEquals(td2.getTypeName(), new String (""));
+		assertEquals(td2.getStartLine(), 101);
+		assertEquals(td2.getEndLine(), 103);
 
 		// union
 		ArrayList nsUnions = namespace.getChildrenOfType(ICElement.C_UNION);
 		IStructure u0 = (IStructure) nsUnions.get(0);
 		assertEquals(u0.getElementName(), new String("U"));		
+		assertEquals(u0.getStartLine(), 105);
+		assertEquals(u0.getEndLine(), 107);
 		ArrayList u0Fields = u0.getChildrenOfType(ICElement.C_FIELD);
 		IField field3 = (IField) u0Fields.get(0);
 		assertEquals(field3.getElementName(), new String("U1"));
 		assertEquals(field3.getTypeName(), new String("int"));
+		assertEquals(field3.getStartLine(), 106);
+		assertEquals(field3.getEndLine(), 106);
 		if(field3.getVisibility() != IMember.V_PUBLIC)
 			fail("field visibility should be public!");
 	}
@@ -376,14 +447,20 @@
 		FunctionTemplate ft = (FunctionTemplate)functionTemplates.get(0);
 		assertEquals(ft.getElementName(), new String("aTemplatedFunction"));
 		assertEquals(ft.getTemplateSignature(), new String("aTemplatedFunction<A, B>(B) : A"));
+		assertEquals(ft.getStartLine(), 112);
+		assertEquals(ft.getEndLine(), 112);
 		
 		// template method
 		ArrayList nsClasses = namespace.getChildrenOfType(ICElement.C_CLASS);
 		IStructure enclosingClass = (IStructure) nsClasses.get(1);
+		assertEquals(enclosingClass.getStartLine(), 114);
+		assertEquals(enclosingClass.getEndLine(), 118);		
 		ArrayList methodTemplates = enclosingClass.getChildrenOfType(ICElement.C_TEMPLATE_METHOD);
 		MethodTemplate mt = (MethodTemplate)methodTemplates.get(0);
 		assertEquals(mt.getElementName(), new String("aTemplatedMethod"));
 		assertEquals(mt.getTemplateSignature(), new String("aTemplatedMethod<A, B>(B) : A"));
+		assertEquals(mt.getStartLine(), 117);
+		assertEquals(mt.getEndLine(), 117);
 		assertEquals(mt.getVisibility(), IMember.V_PUBLIC);
 		
 		// template class
@@ -391,6 +468,8 @@
 		ClassTemplate ct = (ClassTemplate)classTemplates.get(0);
 		assertEquals(ct.getElementName(), new String("myarray"));
 		assertEquals(ct.getTemplateSignature(), new String("myarray<T, Tibor>"));
+		assertEquals(ct.getStartLine(), 120);
+		assertEquals(ct.getEndLine(), 120);
 	}
 	
 	private void checkArrays(IParent tu){
@@ -399,12 +478,16 @@
 		IVariable arrayVar = (IVariable) variables.get(0);
 		assertEquals(arrayVar.getElementName(), new String("myArray"));
 		assertEquals(arrayVar.getTypeName(), new String("int[][]"));
+		assertEquals(arrayVar.getStartLine(), 125);
+		assertEquals(arrayVar.getEndLine(), 125);
 		
 		// array parameter in function main
 		ArrayList functions = tu.getChildrenOfType(ICElement.C_FUNCTION);
 		IFunction mainFunction  = (IFunction) functions.get(0);
 		assertEquals(mainFunction.getElementName(), new String("main"));
 		assertEquals(mainFunction.getReturnType(), new String("int"));
+		assertEquals(mainFunction.getStartLine(), 126);
+		assertEquals(mainFunction.getEndLine(), 128);
 		int NumOfParam = mainFunction.getNumberOfParameters();
 		if(NumOfParam != 2)
 			fail("main should have two parameter!");
Index: model/org/eclipse/cdt/core/model/tests/resources/cfiles/CModelElementsTestStart.h
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/resources/cfiles/CModelElementsTestStart.h,v
retrieving revision 1.2
diff -u -r1.2 CModelElementsTestStart.h
--- model/org/eclipse/cdt/core/model/tests/resources/cfiles/CModelElementsTestStart.h	16 Apr 2003 20:32:18 -0000	1.2
+++ model/org/eclipse/cdt/core/model/tests/resources/cfiles/CModelElementsTestStart.h	21 Apr 2003 14:11:28 -0000
@@ -54,9 +54,17 @@
 
 	// check enums
 	// enum without name
-	enum { first, second, third };
+	enum { 
+		first, 
+		second, 
+		third 
+	}
+	;
 	// enum with name
-	enum MyEnum { f, s, t };
+	enum MyEnum { 
+		f, 
+		s, 
+		t };
 
 	// check variables
 	// variable 
@@ -76,12 +84,12 @@
 	// simple function declaration
 	void foo();
 	// function declaration with parameters
-	char* foo(int& x, char**y);
+	char* foo(int& x, 
+		char**y);
 	// simple function definition
 	void boo(){
 		int g = 0;
 	};
-
 	// check Structs
 	// struct 
 	struct MyStruct{
@@ -90,7 +98,9 @@
 	// typedef and elaborated types
 	typedef struct MyStruct myStruct;
 	// typedef 
-	typedef struct{ int ss; } myTypedef;
+	typedef struct{ 
+		int ss; 
+	} myTypedef;
 	// unions
 	union U{
 		int U1;
@@ -113,6 +123,8 @@
 	// check arrays
 	// arrays
 	int myArray [5][];
-	int main(int argc, char * argv[]) { }
+	int main(int argc, char * argv[]) 
+	{ 
+	}
 	
 
Index: model/org/eclipse/cdt/core/model/ICElement.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ICElement.java,v
retrieving revision 1.7
diff -u -r1.7 ICElement.java
--- model/org/eclipse/cdt/core/model/ICElement.java	11 Apr 2003 14:36:51 -0000	1.7
+++ model/org/eclipse/cdt/core/model/ICElement.java	21 Apr 2003 14:10:56 -0000
@@ -294,4 +294,14 @@
 	 *		exception occurs while accessing its corresponding resource
 	 */
 	boolean isStructureKnown() throws CModelException;
+	/**
+	 * Returns the start line of the CElement
+	 * @return
+	 */
+	int getStartLine();
+	/**
+	 * Returns the end line of the CElement
+	 * @return
+	 */
+	int getEndLine();
 }
Index: parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java,v
retrieving revision 1.15
diff -u -r1.15 CModelBuilder.java
--- parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java	17 Apr 2003 18:34:47 -0000	1.15
+++ parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java	21 Apr 2003 14:10:56 -0000
@@ -228,6 +228,8 @@
 		// set position
 		element.setIdPos(inclusion.getNameOffset(), inclusion.getNameLength());
 		element.setPos(inclusion.getStartingOffset(), inclusion.getTotalLength());
+		// set the element lines
+		element.setLines(inclusion.getTopLine(), inclusion.getBottomLine());
 		this.newElements.put(element, element.getElementInfo());
 		return element;
 	}
@@ -240,6 +242,8 @@
 		// set position
 		element.setIdPos(macro.getNameOffset(), macro.getNameLength());
 		element.setPos(macro.getStartingOffset(), macro.getTotalLength());
+		// set the element lines
+		element.setLines(macro.getTopLine(), macro.getBottomLine());
 		this.newElements.put(element, element.getElementInfo());
 		return element;
 	}
@@ -258,6 +262,8 @@
 		}
 		element.setPos(nsDef.getStartingOffset(), nsDef.getTotalLength());
 		element.setTypeName(nsDef.getStartToken().getImage());
+		// set the element lines
+		element.setLines(nsDef.getTopLine(), nsDef.getBottomLine());
 		
 		this.newElements.put(element, element.getElementInfo());		
 		return element;
@@ -284,6 +290,8 @@
 		}
 		element.setPos(enumSpecifier.getStartingOffset(), enumSpecifier.getTotalLength());
 		element.setTypeName(enumSpecifier.getStartToken().getImage());
+		// set the element lines
+		element.setLines(enumSpecifier.getTopLine(), enumSpecifier.getBottomLine());
 		 
 		this.newElements.put(element, element.getElementInfo());
 		return element;
@@ -296,6 +304,8 @@
 		// set enumerator position
 		element.setIdPos(enumDef.getName().getStartOffset(), enumDef.getName().length());
 		element.setPos(enumDef.getStartingOffset(), enumDef.getTotalLength());
+		// set the element lines
+		element.setLines(enumDef.getTopLine(), enumDef.getBottomLine());
 
 		this.newElements.put(element, element.getElementInfo());
 		return element;		
@@ -345,6 +355,8 @@
 		}
 		element.setTypeName( type );
 		element.setPos(classSpecifier.getStartingOffset(), classSpecifier.getTotalLength());
+		// set the element lines
+		element.setLines(classSpecifier.getTopLine(), classSpecifier.getBottomLine());
 		
 		this.newElements.put(element, element.getElementInfo());
 		return element;
@@ -366,6 +378,8 @@
 		// set positions
 		element.setIdPos(domName.getStartOffset(), domName.length());	
 		element.setPos(simpleDeclaration.getStartingOffset(), simpleDeclaration.getTotalLength());
+		// set the element lines
+		element.setLines(simpleDeclaration.getTopLine(), simpleDeclaration.getBottomLine());
 
 		this.newElements.put(element, element.getElementInfo());
 		return element;	
@@ -409,6 +423,8 @@
 		// set position
 		element.setIdPos( domName.getStartOffset(), domName.length() );
 		element.setPos(simpleDeclaration.getStartingOffset(), simpleDeclaration.getTotalLength());
+		// set the element lines
+		element.setLines(simpleDeclaration.getTopLine(), simpleDeclaration.getBottomLine());
 			
 		this.newElements.put(element, element.getElementInfo());
 		return element;
@@ -465,8 +481,13 @@
 				// this will not be known until we have cross reference information
 				
 				// function
-				Function newElement = new Function( parent, declaratorName );
-				element = newElement;				
+				if(!isTemplate){
+					Function newElement = new Function( parent, declaratorName );
+					element = newElement;				
+				} else {
+					FunctionTemplate newElement = new FunctionTemplate( parent, declaratorName );
+					element = newElement;
+				}
 			}
 			else
 			{
@@ -492,6 +513,9 @@
 		// hook up the offsets
 		element.setIdPos( domName.getStartOffset(), domName.length() );		
 		element.setPos(simpleDeclaration.getStartingOffset(), simpleDeclaration.getTotalLength());	
+		// set the element lines
+		element.setLines(simpleDeclaration.getTopLine(), simpleDeclaration.getBottomLine());
+
 		this.newElements.put(element, element.getElementInfo());
 		return element;
 	}
@@ -544,6 +568,9 @@
 		// hook up the offsets
 		element.setIdPos( declarator.getDeclarator().getName().getStartOffset(), declarator.getDeclarator().getName().length() );
 		element.setPos(simpleDeclaration.getStartingOffset(), simpleDeclaration.getTotalLength());	
+		// set the element lines
+		element.setLines(simpleDeclaration.getTopLine(), simpleDeclaration.getBottomLine());
+
 		this.newElements.put(element, element.getElementInfo());
 		return element;
 	}	

Back to the top