diff --git a/core/org.eclipse.cdt.core.tests/ChangeLog b/core/org.eclipse.cdt.core.tests/ChangeLog index f37f0bc79a4..bc82fde25b7 100644 --- a/core/org.eclipse.cdt.core.tests/ChangeLog +++ b/core/org.eclipse.cdt.core.tests/ChangeLog @@ -1,3 +1,6 @@ +2003-10-22 Hoda Amer + Added offset checking in CModelElementsTest + 2003-10-21 John Camelon Moved testBug40007() from ASTFailedTests to QuickParseASTTests. Added QuickParseASTTests::testBug40759(). diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelElementsTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelElementsTests.java index 244b2cd6a18..c7b425b6f0e 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelElementsTests.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelElementsTests.java @@ -119,6 +119,7 @@ public class CModelElementsTests extends TestCase { ArrayList tuPackages = tu.getChildrenOfType(ICElement.C_NAMESPACE); INamespace namespace = (INamespace) tuPackages.get(0); assertEquals(namespace.getElementName(), new String("MyPackage")); + checkElementOffset((CElement)namespace); checkLineNumbers((CElement)namespace, 8, 130); checkClass(namespace); @@ -141,6 +142,7 @@ public class CModelElementsTests extends TestCase { ArrayList tuIncludes = tu.getChildrenOfType(ICElement.C_INCLUDE); IInclude inc1 = (IInclude) tuIncludes.get(0); assertEquals(inc1.getElementName(), new String("stdio.h")); + checkElementOffset((CElement)inc1); checkLineNumbers((CElement)inc1, 2, 2); } @@ -148,6 +150,7 @@ public class CModelElementsTests extends TestCase { ArrayList tuMacros = tu.getChildrenOfType(ICElement.C_MACRO); IMacro mac1 = (IMacro) tuMacros.get(0); assertEquals(mac1.getElementName(), new String("PRINT")); + checkElementOffset((CElement)mac1); checkLineNumbers((CElement)mac1, 5, 5); } @@ -156,12 +159,14 @@ public class CModelElementsTests extends TestCase { ArrayList nsClasses = namespace.getChildrenOfType(ICElement.C_CLASS); IStructure classHello = (IStructure) nsClasses.get(0); assertEquals(classHello.getElementName(), new String("Hello")); + checkElementOffset((CElement)classHello); checkLineNumbers((CElement)classHello, 12, 53); // Hello --> field: int x ArrayList helloFields = classHello.getChildrenOfType(ICElement.C_FIELD); IField intX = (IField) helloFields.get(0); assertEquals(intX.getElementName(), new String("x")); + checkElementOffset((CElement)intX); assertEquals(intX.getTypeName(), new String("int")); checkLineNumbers((CElement)intX, 17, 17); @@ -173,6 +178,7 @@ public class CModelElementsTests extends TestCase { ArrayList helloMethods = classHello.getChildrenOfType(ICElement.C_METHOD); IMethod setX = (IMethod) helloMethods.get(0); assertEquals(setX.getElementName(), new String("setX")); + checkElementOffset((CElement)setX); assertEquals(setX.getReturnType(), new String("void")); checkLineNumbers((CElement)setX, 19, 22); int setXNumOfParam = setX.getNumberOfParameters(); @@ -190,6 +196,7 @@ public class CModelElementsTests extends TestCase { ArrayList helloNamespaces = classHello.getChildrenOfType(ICElement.C_NAMESPACE); INamespace myNestedPackage = (INamespace) helloNamespaces.get(0); assertEquals(myNestedPackage.getElementName(), new String("MyNestedPackage")); + checkElementOffset((CElement)myNestedPackage); checkLineNumbers((CElement)myNestedPackage, 25, 52); checkParentNestedClass(myNestedPackage); @@ -200,18 +207,21 @@ public class CModelElementsTests extends TestCase { ArrayList nestedClasses = myNestedPackage.getChildrenOfType(ICElement.C_CLASS); IStructure classY = (IStructure) nestedClasses.get(0); assertEquals(classY.getElementName(), new String("Y")); + checkElementOffset((CElement)classY); checkLineNumbers((CElement)classY, 28, 35); // Y ---> constructor: Y ArrayList yMethods = classY.getChildrenOfType(ICElement.C_METHOD_DECLARATION); IMethodDeclaration constructor = (IMethodDeclaration) yMethods.get(0); assertEquals(constructor.getElementName(), new String("Y")); + checkElementOffset((CElement)constructor); assertTrue (constructor.isConstructor()); checkLineNumbers((CElement)constructor, 32, 32); // Y ---> destructor: ~Y IMethodDeclaration destructor = (IMethodDeclaration) yMethods.get(1); assertEquals(destructor.getElementName(), new String("~Y")); + checkElementOffset((CElement)destructor); assertTrue (destructor.isDestructor()); checkLineNumbers((CElement)destructor, 34, 34); // TODO: check for virtual on destructors @@ -223,6 +233,7 @@ public class CModelElementsTests extends TestCase { ArrayList nestedClasses = myNestedPackage.getChildrenOfType(ICElement.C_CLASS); IStructure classX = (IStructure) nestedClasses.get(1); assertEquals(classX.getElementName(), new String("X")); + checkElementOffset((CElement)classX); checkLineNumbers((CElement)classX, 38, 51); // TODO : Check for base classes here @@ -230,6 +241,7 @@ public class CModelElementsTests extends TestCase { ArrayList xFieldChildren = classX.getChildrenOfType(ICElement.C_FIELD); IField bB = (IField) xFieldChildren.get(0); assertEquals(bB.getElementName(), new String("b")); + checkElementOffset((CElement)bB); assertEquals(bB.getTypeName(), new String("B")); checkLineNumbers((CElement)bB, 42, 42); ASTAccessVisibility bVisibility = bB.getVisibility(); @@ -240,6 +252,7 @@ public class CModelElementsTests extends TestCase { ArrayList xMethodChildren = classX.getChildrenOfType(ICElement.C_METHOD); IMethod xconstructor = (IMethod) xMethodChildren.get(0); assertEquals(xconstructor.getElementName(), new String("X")); + checkElementOffset((CElement)xconstructor); assertTrue (xconstructor.isConstructor()); checkLineNumbers((CElement)xconstructor, 46, 48); @@ -247,6 +260,7 @@ public class CModelElementsTests extends TestCase { ArrayList xMethodDeclarations = classX.getChildrenOfType(ICElement.C_METHOD_DECLARATION); IMethodDeclaration xDoNothing = (IMethodDeclaration) xMethodDeclarations.get(0); assertEquals(xDoNothing.getElementName(), new String("doNothing")); + checkElementOffset((CElement)xDoNothing); assertEquals(xDoNothing.getReturnType(), new String("int")); checkLineNumbers((CElement)xDoNothing, 50, 50); } @@ -256,34 +270,43 @@ public class CModelElementsTests extends TestCase { ArrayList nsEnums = namespace.getChildrenOfType(ICElement.C_ENUMERATION); IEnumeration enum = (IEnumeration) nsEnums.get(0); assertEquals(enum.getElementName(), new String("")); + checkElementOffset((CElement)enum); checkLineNumbers((CElement)enum, 57, 61); // enum ---> enumerator: first ArrayList enumEnumerators = enum.getChildrenOfType(ICElement.C_ENUMERATOR); IEnumerator first = (IEnumerator) enumEnumerators.get(0); assertEquals(first.getElementName(), new String("first")); + checkElementOffset((CElement)first); // enum ---> enumerator: second IEnumerator second = (IEnumerator) enumEnumerators.get(1); assertEquals(second.getElementName(), new String("second")); + checkElementOffset((CElement)second); // enum ---> enumerator: third IEnumerator third = (IEnumerator) enumEnumerators.get(2); + checkElementOffset((CElement)third); assertEquals(third.getElementName(), new String("third")); - + checkElementOffset((CElement)third); + // MyPackage ---> enum: MyEnum IEnumeration myEnum = (IEnumeration) nsEnums.get(1); assertEquals(myEnum.getElementName(), new String("MyEnum")); + checkElementOffset((CElement)myEnum); checkLineNumbers((CElement)myEnum, 64, 67); // enum ---> enumerator: first ArrayList myEnumEnumerators = myEnum.getChildrenOfType(ICElement.C_ENUMERATOR); IEnumerator f = (IEnumerator) myEnumEnumerators.get(0); assertEquals(f.getElementName(), new String("f")); + checkElementOffset((CElement)f); // enum ---> enumerator: second IEnumerator s = (IEnumerator) myEnumEnumerators.get(1); assertEquals(s.getElementName(), new String("s")); + checkElementOffset((CElement)s); // enum ---> enumerator: third IEnumerator t = (IEnumerator) myEnumEnumerators.get(2); assertEquals(t.getElementName(), new String("t")); + checkElementOffset((CElement)t); } private void checkVariables(IParent namespace){ @@ -291,24 +314,28 @@ public class CModelElementsTests extends TestCase { ArrayList nsVars = namespace.getChildrenOfType(ICElement.C_VARIABLE); IVariable var1 = (IVariable) nsVars.get(0); assertEquals(var1.getElementName(), new String("v")); + checkElementOffset((CElement)var1); assertEquals(var1.getTypeName(), new String("int")); checkLineNumbers((CElement)var1, 71, 71); // MyPackage ---> unsigned long vuLong IVariable var2 = (IVariable) nsVars.get(1); assertEquals(var2.getElementName(), new String("vuLong")); + checkElementOffset((CElement)var2); assertEquals(var2.getTypeName(), new String("unsigned long int")); checkLineNumbers((CElement)var2, 73, 73); // MyPackage ---> unsigned short vuShort IVariable var3 = (IVariable) nsVars.get(2); assertEquals(var3.getElementName(), new String("vuShort")); + checkElementOffset((CElement)var3); assertEquals(var3.getTypeName(), new String("unsigned short int")); checkLineNumbers((CElement)var3, 75, 75); // MyPackage ---> function pointer: orig_malloc_hook IVariable vDecl2 = (IVariable) nsVars.get(3); assertEquals(vDecl2.getElementName(), new String("orig_malloc_hook")); + checkElementOffset((CElement)vDecl2); assertEquals(vDecl2.getTypeName(), new String ("void*(*)(const char*, int, size_t)")); checkLineNumbers((CElement)vDecl2, 81, 81); } @@ -318,6 +345,7 @@ public class CModelElementsTests extends TestCase { ArrayList nsVarDecls = namespace.getChildrenOfType(ICElement.C_VARIABLE_DECLARATION); IVariableDeclaration vDecl1 = (IVariableDeclaration) nsVarDecls.get(0); assertEquals(vDecl1.getElementName(), new String("evar")); + checkElementOffset((CElement)vDecl1); assertEquals(vDecl1.getTypeName(), new String("int")); checkLineNumbers((CElement)vDecl1, 79, 79); } @@ -328,12 +356,14 @@ public class CModelElementsTests extends TestCase { // MyPackage ---> function: void foo() IFunctionDeclaration f1 = (IFunctionDeclaration) nsFunctionDeclarations.get(0); assertEquals(f1.getElementName(), new String("foo")); + checkElementOffset((CElement)f1); assertEquals(f1.getReturnType(), new String("void")); checkLineNumbers((CElement)f1, 85, 85); // MyPackage ---> function: char* foo(int&, char**) IFunctionDeclaration f2 = (IFunctionDeclaration) nsFunctionDeclarations.get(1); assertEquals(f2.getElementName(), new String("foo")); + checkElementOffset((CElement)f2); assertEquals(f2.getReturnType(), new String("char*")); checkLineNumbers((CElement)f2, 87, 88); int fooNumOfParam = f2.getNumberOfParameters(); @@ -347,6 +377,7 @@ public class CModelElementsTests extends TestCase { ArrayList nsFunctions = namespace.getChildrenOfType(ICElement.C_FUNCTION); IFunction f3 = (IFunction) nsFunctions.get(0); assertEquals(f3.getElementName(), new String("boo")); + checkElementOffset((CElement)f3); assertEquals(f3.getReturnType(), new String("void")); checkLineNumbers((CElement)f3, 90, 92); } @@ -356,10 +387,12 @@ public class CModelElementsTests extends TestCase { ArrayList nsStructs = namespace.getChildrenOfType(ICElement.C_STRUCT); IStructure struct1 = (IStructure) nsStructs.get(0); assertEquals(struct1.getElementName(), new String ("MyStruct")); + checkElementOffset((CElement)struct1); checkLineNumbers((CElement)struct1, 95, 97); ArrayList struct1Fields = struct1.getChildrenOfType(ICElement.C_FIELD); IField field1 = (IField) struct1Fields.get(0); assertEquals(field1.getElementName(), new String("sint")); + checkElementOffset((CElement)field1); assertEquals(field1.getTypeName(), new String("int")); checkLineNumbers((CElement)field1, 96, 96); @@ -369,10 +402,12 @@ public class CModelElementsTests extends TestCase { // struct no name IStructure struct2 = (IStructure) nsStructs.get(1); assertEquals(struct2.getElementName(), new String ("")); + checkElementOffset((CElement)struct2); checkLineNumbers((CElement)struct2, 101, 103); ArrayList struct2Fields = struct2.getChildrenOfType(ICElement.C_FIELD); IField field2 = (IField) struct2Fields.get(0); assertEquals(field2.getElementName(), new String("ss")); + checkElementOffset((CElement)field2); assertEquals(field2.getTypeName(), new String("int")); checkLineNumbers((CElement)field2, 102, 102); if(field2.getVisibility() != ASTAccessVisibility.PUBLIC) @@ -382,10 +417,12 @@ public class CModelElementsTests extends TestCase { ArrayList nsTypeDefs = namespace.getChildrenOfType(ICElement.C_TYPEDEF); ITypeDef td1 = (ITypeDef) nsTypeDefs.get(0); assertEquals(td1.getElementName(), new String ("myStruct")); + checkElementOffset((CElement)td1); assertEquals(td1.getTypeName(), new String ("struct MyStruct")); checkLineNumbers((CElement)td1, 99, 99); ITypeDef td2 = (ITypeDef) nsTypeDefs.get(1); assertEquals(td2.getElementName(), new String ("myTypedef")); + checkElementOffset((CElement)td2); assertEquals(td2.getTypeName(), new String ("")); checkLineNumbers((CElement)td2, 101, 103); @@ -393,10 +430,12 @@ public class CModelElementsTests extends TestCase { ArrayList nsUnions = namespace.getChildrenOfType(ICElement.C_UNION); IStructure u0 = (IStructure) nsUnions.get(0); assertEquals(u0.getElementName(), new String("U")); + checkElementOffset((CElement)u0); checkLineNumbers((CElement)u0, 105, 107); ArrayList u0Fields = u0.getChildrenOfType(ICElement.C_FIELD); IField field3 = (IField) u0Fields.get(0); assertEquals(field3.getElementName(), new String("U1")); + checkElementOffset((CElement)field3); assertEquals(field3.getTypeName(), new String("int")); checkLineNumbers((CElement)field3, 106, 106); if(field3.getVisibility() != ASTAccessVisibility.PUBLIC) @@ -408,6 +447,7 @@ public class CModelElementsTests extends TestCase { ArrayList functionTemplates = namespace.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION); FunctionTemplate ft = (FunctionTemplate)functionTemplates.get(0); assertEquals(ft.getElementName(), new String("aTemplatedFunction")); + checkElementOffset((CElement)ft); String sig = ft.getTemplateSignature(); assertEquals(ft.getTemplateSignature(), new String("aTemplatedFunction(B) : A")); checkLineNumbers((CElement)ft, 112, 113); @@ -419,6 +459,7 @@ public class CModelElementsTests extends TestCase { ArrayList methodTemplates = enclosingClass.getChildrenOfType(ICElement.C_TEMPLATE_METHOD); MethodTemplate mt = (MethodTemplate)methodTemplates.get(0); assertEquals(mt.getElementName(), new String("aTemplatedMethod")); + checkElementOffset((CElement)mt); assertEquals(mt.getTemplateSignature(), new String("aTemplatedMethod(B) : A")); checkLineNumbers((CElement)mt, 118, 119); assertEquals(mt.getVisibility(), ASTAccessVisibility.PUBLIC); @@ -427,6 +468,7 @@ public class CModelElementsTests extends TestCase { ArrayList classTemplates = namespace.getChildrenOfType(ICElement.C_TEMPLATE_CLASS); StructureTemplate ct = (StructureTemplate)classTemplates.get(0); assertEquals(ct.getElementName(), new String("myarray")); + checkElementOffset((CElement)ct); assertEquals(ct.getTemplateSignature(), new String("myarray")); checkLineNumbers((CElement)ct, 122, 123); @@ -434,6 +476,7 @@ public class CModelElementsTests extends TestCase { ArrayList structTemplates = namespace.getChildrenOfType(ICElement.C_TEMPLATE_STRUCT); StructureTemplate st = (StructureTemplate)structTemplates.get(0); assertEquals(st.getElementName(), new String("mystruct")); + checkElementOffset((CElement)st); assertEquals(st.getTemplateSignature(), new String("mystruct")); checkLineNumbers((CElement)st, 125, 126); @@ -443,6 +486,7 @@ public class CModelElementsTests extends TestCase { // ArrayList variableTemplates = namespace.getChildrenOfType(ICElement.C_TEMPLATE_VARIABLE); // VariableTemplate vt = (VariableTemplate)variableTemplates.get(0); // assertEquals(vt.getElementName(), new String("default_alloc_template<__threads,__inst>::_S_start_free")); +// checkElementOffset((CElement)mac1); // assertEquals(vt.getTemplateSignature(), new String("default_alloc_template<__threads,__inst>::_S_start_free : char*")); // checkLineNumbers((CElement)vt, 128, 129); } @@ -452,6 +496,7 @@ public class CModelElementsTests extends TestCase { ArrayList variables = tu.getChildrenOfType(ICElement.C_VARIABLE); IVariable arrayVar = (IVariable) variables.get(0); assertEquals(arrayVar.getElementName(), new String("myArray")); + checkElementOffset((CElement)arrayVar); assertEquals(arrayVar.getTypeName(), new String("int[][]")); checkLineNumbers((CElement)arrayVar, 133, 133); @@ -459,6 +504,7 @@ public class CModelElementsTests extends TestCase { ArrayList functions = tu.getChildrenOfType(ICElement.C_FUNCTION); IFunction mainFunction = (IFunction) functions.get(0); assertEquals(mainFunction.getElementName(), new String("main")); + checkElementOffset((CElement)mainFunction); assertEquals(mainFunction.getReturnType(), new String("int")); checkLineNumbers((CElement)mainFunction, 134, 136); int NumOfParam = mainFunction.getNumberOfParameters(); @@ -474,5 +520,20 @@ public class CModelElementsTests extends TestCase { // assertEquals(startLine, element.getStartLine()); // assertEquals(endLine, element.getEndLine()); } - + private void checkElementOffset(CElement element){ + if(element.getElementName().length() > 0 ){ + assertTrue (element.getStartPos() <= element.getIdStartPos()); + assertEquals (element.getIdLength(), element.getElementName().length()); + } + else{ + assertEquals (element.getStartPos(), element.getIdStartPos()); + if(element instanceof ITypeDef) + assertEquals ( element.getIdLength(), ((ITypeDef)element).getTypeName().length()); + else if(element instanceof IEnumeration) + assertEquals ( element.getIdLength(), ((IEnumeration)element).getTypeName().length()); + else if(element instanceof IStructure) + assertEquals ( element.getIdLength(), ((IStructure)element).getTypeName().length()); + } + + } } diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index 40b53fa8320..8ceed593920 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -1,3 +1,7 @@ +2003-10-22 Hoda Amer + Fix for bug#40759: Offsets of macroexpansions are not correct + Fix for bug#44633: Outline View : CModelBuilder quits on templated friends + 2003-10-21 Alain Magloire Moving the implementation of the ICPathEntry in the Core Model diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java index 44187006e9d..aced75e8c64 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java @@ -32,6 +32,7 @@ import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit; import org.eclipse.cdt.core.parser.ast.IASTDeclaration; +import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier; import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier; import org.eclipse.cdt.core.parser.ast.IASTEnumerator; import org.eclipse.cdt.core.parser.ast.IASTField; @@ -189,13 +190,15 @@ public class CModelBuilder { IASTDeclaration declaration = (IASTDeclaration)templateDeclaration.getOwnedDeclaration(); if(declaration instanceof IASTAbstractTypeSpecifierDeclaration){ IASTAbstractTypeSpecifierDeclaration abstractDeclaration = (IASTAbstractTypeSpecifierDeclaration)declaration ; - CElement element = createAbstractElement(parent, abstractDeclaration , true); - // set the element position - element.setPos(templateDeclaration.getStartingOffset(), templateDeclaration.getEndingOffset() - templateDeclaration.getStartingOffset()); - // set the template parameters - String[] parameterTypes = ASTUtil.getTemplateParameters(templateDeclaration); - ITemplate classTemplate = (ITemplate) element; - classTemplate.setTemplateParameterTypes(parameterTypes); + CElement element = createAbstractElement(parent, abstractDeclaration , true); + if(element != null){ + // set the element position + element.setPos(templateDeclaration.getStartingOffset(), templateDeclaration.getEndingOffset() - templateDeclaration.getStartingOffset()); + // set the template parameters + String[] parameterTypes = ASTUtil.getTemplateParameters(templateDeclaration); + ITemplate classTemplate = (ITemplate) element; + classTemplate.setTemplateParameterTypes(parameterTypes); + } } ITemplate template = null; template = (ITemplate) createSimpleElement(parent, declaration, true); @@ -239,6 +242,9 @@ public class CModelBuilder { IASTDeclaration subDeclaration = (IASTDeclaration)j.next(); generateModelElements((Parent)classElement, subDeclaration); } // end while j + } else if (typeSpec instanceof IASTElaboratedTypeSpecifier){ + // This is not a model element, so we don't create anything here. + // However, do we need to do anything else? } } return element; @@ -266,7 +272,7 @@ public class CModelBuilder { // add to parent parent.addChild((CElement) element); // set position - element.setIdPos(inclusion.getNameOffset(), inclusion.getName().length()); + element.setIdPos(inclusion.getNameOffset(), inclusion.getNameEndOffset() - inclusion.getNameOffset()); element.setPos(inclusion.getStartingOffset(), inclusion.getEndingOffset() - inclusion.getStartingOffset()); this.newElements.put(element, element.getElementInfo()); @@ -279,7 +285,7 @@ public class CModelBuilder { // add to parent parent.addChild((CElement) element); // set position - element.setIdPos(macro.getNameOffset(), macro.getName().length()); + element.setIdPos(macro.getNameOffset(), macro.getNameEndOffset() - macro.getNameOffset()); element.setPos(macro.getStartingOffset(), macro.getEndingOffset() - macro.getStartingOffset()); this.newElements.put(element, element.getElementInfo()); @@ -295,7 +301,8 @@ public class CModelBuilder { Namespace element = new Namespace ((ICElement)parent, nsName ); // add to parent parent.addChild((ICElement)element); - element.setIdPos(nsDef.getNameOffset(), (nsName.length() == 0) ? type.length() : nsName.length()); + element.setIdPos(nsDef.getNameOffset(), + (nsName.length() == 0) ? type.length() : (nsDef.getNameEndOffset() - nsDef.getNameOffset())); element.setPos(nsDef.getStartingOffset(), nsDef.getEndingOffset() - nsDef.getStartingOffset()); element.setTypeName(type); @@ -319,7 +326,8 @@ public class CModelBuilder { createEnumerator(element, enumDef); } // set enumeration position - element.setIdPos(enumSpecifier.getNameOffset(), (enumName.length() == 0) ? type.length() : enumName.length()); + element.setIdPos(enumSpecifier.getNameOffset(), + (enumName.length() == 0) ? type.length() : (enumSpecifier.getNameEndOffset() - enumSpecifier.getNameOffset() )); element.setPos(enumSpecifier.getStartingOffset(), enumSpecifier.getEndingOffset() - enumSpecifier.getStartingOffset()); element.setTypeName(type); @@ -332,7 +340,7 @@ public class CModelBuilder { // add to parent enum.addChild(element); // set enumerator position - element.setIdPos(enumDef.getStartingOffset(), enumDef.getName().length()); + element.setIdPos(enumDef.getStartingOffset(), (enumDef.getNameEndOffset() - enumDef.getNameOffset())); element.setPos(enumDef.getStartingOffset(), enumDef.getEndingOffset() - enumDef.getStartingOffset()); this.newElements.put(element, element.getElementInfo()); @@ -395,7 +403,8 @@ public class CModelBuilder { // add to parent parent.addChild((ICElement) element); // set element position - element.setIdPos( classSpecifier.getNameOffset(), (className.length() == 0) ? type.length() : className.length() ); + element.setIdPos( classSpecifier.getNameOffset(), + (className.length() == 0) ? type.length() : (classSpecifier.getNameEndOffset() - classSpecifier.getNameOffset() )); element.setTypeName( type ); if(!isTemplate){ // set the element position @@ -419,7 +428,7 @@ public class CModelBuilder { parent.addChild((CElement)element); // set positions - element.setIdPos(typeDefDeclaration.getNameOffset(),name.length()); + element.setIdPos(typeDefDeclaration.getNameOffset(), (typeDefDeclaration.getNameEndOffset() - typeDefDeclaration.getNameOffset())); element.setPos(typeDefDeclaration.getStartingOffset(), typeDefDeclaration.getEndingOffset() - typeDefDeclaration.getStartingOffset()); this.newElements.put(element, element.getElementInfo()); @@ -472,7 +481,7 @@ public class CModelBuilder { parent.addChild( element ); // set position - element.setIdPos( varDeclaration.getNameOffset(), variableName.length() ); + element.setIdPos( varDeclaration.getNameOffset(), (varDeclaration.getNameEndOffset() - varDeclaration.getNameOffset()) ); if(!isTemplate){ // set element position element.setPos(varDeclaration.getStartingOffset(), varDeclaration.getEndingOffset() - varDeclaration.getStartingOffset()); @@ -572,7 +581,7 @@ public class CModelBuilder { parent.addChild( element ); // hook up the offsets - element.setIdPos( functionDeclaration.getNameOffset(), functionDeclaration.getNameEndOffset() - functionDeclaration.getNameOffset() ); + element.setIdPos( functionDeclaration.getNameOffset(), (functionDeclaration.getNameEndOffset() - functionDeclaration.getNameOffset()) ); if(!isTemplate){ // set the element position element.setPos(functionDeclaration.getStartingOffset(), functionDeclaration.getEndingOffset() - functionDeclaration.getStartingOffset());