From 40f998253480bc25ea44df8c4d93089dc87d3cbb Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Wed, 26 May 2004 02:59:50 +0000 Subject: [PATCH] Update the necessary classes to use the new ResolverModel. --- .../cdt/core/model/tests/CModelTests.java | 28 ++++---- core/org.eclipse.cdt.core/ChangeLog | 4 ++ .../org/eclipse/cdt/core/model/CoreModel.java | 72 ++----------------- .../internal/core/model/CContainerInfo.java | 3 +- .../internal/core/model/CModelBuilder.java | 8 ++- .../internal/core/model/CModelManager.java | 10 ++- .../cdt/internal/core/model/CProjectInfo.java | 2 +- .../internal/core/model/DeltaProcessor.java | 2 +- .../internal/core/model/IncludeReference.java | 3 +- .../internal/core/model/PathEntryManager.java | 5 +- .../internal/core/model/TranslationUnit.java | 6 +- .../src/org/eclipse/cdt/core/CCorePlugin.java | 27 ------- .../typeinfo/TypeInfoLabelProvider.java | 2 +- .../corext/refactoring/UndoManager.java | 2 +- .../org/eclipse/cdt/ui/CElementSorter.java | 24 ++----- 15 files changed, 61 insertions(+), 137 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelTests.java index 0871a3feea9..abae01161b5 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelTests.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelTests.java @@ -112,17 +112,17 @@ public class CModelTests extends TestCase { testProject=CProjectHelper.createCProject("naturetest", "none"); if (testProject==null) fail("Unable to create project"); - assertTrue("hasCNature works", CoreModel.getDefault().hasCNature(testProject.getProject())); - assertTrue("hasCCNature works without ccnature", !(CoreModel.getDefault().hasCCNature(testProject.getProject()))); + assertTrue("hasCNature works", CoreModel.hasCNature(testProject.getProject())); + assertTrue("hasCCNature works without ccnature", !(CoreModel.hasCCNature(testProject.getProject()))); CCProjectNature.addCCNature(testProject.getProject(), monitor); - assertTrue("hasCCNature works", (CoreModel.getDefault().hasCCNature(testProject.getProject()))); + assertTrue("hasCCNature works", (CoreModel.hasCCNature(testProject.getProject()))); CCProjectNature.removeCCNature(testProject.getProject(), monitor); CCProjectNature.removeCNature(testProject.getProject(), monitor); - assertTrue("hasCNature works without cnature", !CoreModel.getDefault().hasCNature(testProject.getProject())); - assertTrue("hasCCNature works without ccnature or cnature", !(CoreModel.getDefault().hasCCNature(testProject.getProject()))); + assertTrue("hasCNature works without cnature", !CoreModel.hasCNature(testProject.getProject())); + assertTrue("hasCCNature works without ccnature or cnature", !(CoreModel.hasCCNature(testProject.getProject()))); try{ testProject.getProject().delete(true,true,monitor); } @@ -154,7 +154,7 @@ public class CModelTests extends TestCase { assertTrue("isSharedLib", !CoreModel.getDefault().isSharedLib(file)); assertTrue("isArchive", !CoreModel.getDefault().isArchive(file)); assertTrue("isObject", !CoreModel.getDefault().isObject(file)); - assertTrue("isTranslationUnit", !CoreModel.getDefault().isTranslationUnit(file)); + assertTrue("isTranslationUnit", !CoreModel.isTranslationUnit(file)); file = testProject.getProject().getFile("exetest.c"); @@ -171,7 +171,7 @@ public class CModelTests extends TestCase { assertTrue("isSharedLib", !CoreModel.getDefault().isSharedLib(file)); assertTrue("isArchive", !CoreModel.getDefault().isArchive(file)); assertTrue("isObject", !CoreModel.getDefault().isObject(file)); - assertTrue("isTranslationUnit", CoreModel.getDefault().isTranslationUnit(file)); + assertTrue("isTranslationUnit", CoreModel.isTranslationUnit(file)); file = testProject.getProject().getFile("exetest.o"); if (!file.exists()) { @@ -187,7 +187,7 @@ public class CModelTests extends TestCase { assertTrue("isSharedLib", !CoreModel.getDefault().isSharedLib(file)); assertTrue("isArchive", !CoreModel.getDefault().isArchive(file)); assertTrue("isObject", CoreModel.getDefault().isObject(file)); - assertTrue("isTranslationUnit", !CoreModel.getDefault().isTranslationUnit(file)); + assertTrue("isTranslationUnit", !CoreModel.isTranslationUnit(file)); file = testProject.getProject().getFile("liblibtest_g.so"); if (!file.exists()) { @@ -203,7 +203,7 @@ public class CModelTests extends TestCase { assertTrue("isSharedLib", CoreModel.getDefault().isSharedLib(file)); assertTrue("isArchive", !CoreModel.getDefault().isArchive(file)); assertTrue("isObject", !CoreModel.getDefault().isObject(file)); - assertTrue("isTranslationUnit", !CoreModel.getDefault().isTranslationUnit(file)); + assertTrue("isTranslationUnit", !CoreModel.isTranslationUnit(file)); file = testProject.getProject().getFile("liblibtest_g.a"); if (!file.exists()) { @@ -222,7 +222,7 @@ public class CModelTests extends TestCase { assertTrue("isSharedLib", !CoreModel.getDefault().isSharedLib(file)); assertTrue("isArchive", CoreModel.getDefault().isArchive(file)); assertTrue("isObject", !CoreModel.getDefault().isObject(file)); - assertTrue("isTranslationUnit", !CoreModel.getDefault().isTranslationUnit(file)); + assertTrue("isTranslationUnit", !CoreModel.isTranslationUnit(file)); @@ -237,9 +237,9 @@ public class CModelTests extends TestCase { * Some simple tests for isValidTranslationUnitName */ public void testIsValidTranslationUnitName() throws CoreException { - assertTrue("Invalid C file", !CoreModel.getDefault().isValidTranslationUnitName("notcfile")); - assertTrue("Invalid C file", !CoreModel.getDefault().isValidTranslationUnitName("not.c.file")); - assertTrue("Invalid C file", !CoreModel.getDefault().isValidTranslationUnitName("not.ca")); - assertTrue("Valid C file", CoreModel.getDefault().isValidTranslationUnitName("areal.c")); + assertTrue("Invalid C file", !CoreModel.isValidTranslationUnitName(null, "notcfile")); + assertTrue("Invalid C file", !CoreModel.isValidTranslationUnitName(null, "not.c.file")); + assertTrue("Invalid C file", !CoreModel.isValidTranslationUnitName(null, "not.ca")); + assertTrue("Valid C file", CoreModel.isValidTranslationUnitName(null, "areal.c")); } } diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index a797c0eb312..0d095c1caa2 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -1,3 +1,7 @@ +2004-05-25 Alain Magloire + Update the necessary classes to use the new + ResolverModel. + 2004-05-25 Alain Magloire Major Patch from Sam Robb diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java index b2f73e5c74f..ff677333052 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java @@ -3,14 +3,11 @@ package org.eclipse.cdt.core.model; /* * (c) Copyright QNX Software Systems Ltd. 2002. All Rights Reserved. */ -import java.util.ArrayList; import org.eclipse.cdt.core.CCProjectNature; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.CProjectNature; import org.eclipse.cdt.core.filetype.ICFileType; -import org.eclipse.cdt.core.filetype.ICFileTypeAssociation; -import org.eclipse.cdt.core.filetype.ICFileTypeResolver; import org.eclipse.cdt.core.resources.IPathEntryStore; import org.eclipse.cdt.internal.core.model.BatchOperation; import org.eclipse.cdt.internal.core.model.CModel; @@ -170,84 +167,27 @@ public class CoreModel { /** * Return true if name is a valid name for a translation unit. */ - public static boolean isValidTranslationUnitName(String name) { - ICFileTypeResolver resolver = CCorePlugin.getDefault().getFileTypeResolver(); - ICFileType type = resolver.getFileType(name); + public static boolean isValidTranslationUnitName(IProject project, String name) { + ICFileType type = CCorePlugin.getDefault().getFileType(project, name); return type.isTranslationUnit(); } /** * Return true if name is a valid name for a translation unit. */ - public static boolean isValidHeaderUnitName(String name) { - ICFileTypeResolver resolver = CCorePlugin.getDefault().getFileTypeResolver(); - ICFileType type = resolver.getFileType(name); + public static boolean isValidHeaderUnitName(IProject project, String name) { + ICFileType type = CCorePlugin.getDefault().getFileType(project, name); return type.isHeader(); } /** * Return true if name is a valid name for a translation unit. */ - public static boolean isValidSourceUnitName(String name) { - ICFileTypeResolver resolver = CCorePlugin.getDefault().getFileTypeResolver(); - ICFileType type = resolver.getFileType(name); + public static boolean isValidSourceUnitName(IProject project, String name) { + ICFileType type = CCorePlugin.getDefault().getFileType(project, name); return type.isSource(); } - /** - * Return the list of headers extensions. - */ - public static String[] getHeaderExtensions() { - ICFileTypeResolver resolver = CCorePlugin.getDefault().getFileTypeResolver(); - ICFileTypeAssociation[] associations = resolver.getFileTypeAssociations(); - ArrayList list = new ArrayList(associations.length); - for (int i = 0; i < associations.length; i++) { - ICFileType type = associations[i].getType(); - if (type.isHeader()) { - list.add(associations[i].getPattern()); - } - } - String[] exts = new String[list.size()]; - list.toArray(exts); - return exts; - } - - /** - * Returns the list of source extensions. - */ - public static String[] getSourceExtensions() { - ICFileTypeResolver resolver = CCorePlugin.getDefault().getFileTypeResolver(); - ICFileTypeAssociation[] associations = resolver.getFileTypeAssociations(); - ArrayList list = new ArrayList(associations.length); - for (int i = 0; i < associations.length; i++) { - ICFileType type = associations[i].getType(); - if (type.isSource()) { - list.add(associations[i].getPattern()); - } - } - String[] exts = new String[list.size()]; - list.toArray(exts); - return exts; - } - - /** - * Returns the list of headers and sources extensions - */ - public static String[] getTranslationUnitExtensions() { - ICFileTypeResolver resolver = CCorePlugin.getDefault().getFileTypeResolver(); - ICFileTypeAssociation[] associations = resolver.getFileTypeAssociations(); - ArrayList list = new ArrayList(associations.length); - for (int i = 0; i < associations.length; i++) { - ICFileType type = associations[i].getType(); - if (type.isTranslationUnit()) { - list.add(associations[i].getPattern()); - } - } - String[] exts = new String[list.size()]; - list.toArray(exts); - return exts; - } - /** * Return true if project has C nature. */ diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CContainerInfo.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CContainerInfo.java index e664c6f53bf..b5771fd93f5 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CContainerInfo.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CContainerInfo.java @@ -80,7 +80,8 @@ public class CContainerInfo extends OpenableInfo { } case IResource.FILE: { String filename = member.getName(); - if (CoreModel.isValidTranslationUnitName(filename) && root.isOnSourceEntry(member)) { + if (CoreModel.isValidTranslationUnitName(cproject.getProject(), filename) && + root.isOnSourceEntry(member)) { continue; } else { if (root.isOnSourceEntry(member)) { 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 ef2550ef311..e3722815c26 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 @@ -135,7 +135,13 @@ public class CModelBuilder { } // pick the language - ParserLanguage language = hasCppNature ? ParserLanguage.CPP : ParserLanguage.C; + ParserLanguage language; + if (hasCppNature) { + language = ParserLanguage.CPP; + } else { + // for C project try to guess. + language = translationUnit.isCXXLanguage() ? ParserLanguage.CPP : ParserLanguage.C; + } // create the parser IParser parser = null; diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java index 5c64bded632..98cfc7bcbbf 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java @@ -266,6 +266,14 @@ public class CModelManager implements IResourceChangeListener, ICDescriptorListe if (cproject == null) { cproject = create(file.getProject()); } + ///////////////////////////////////////////////// + // FIXME-alain: Quick hack 'til we fix the CDescriptor + // This should/must be remove + // ".cdtproject" is a special file for CProjects. + ///////////////////////////////////////////////// + if (file.getName().equals(".cdtproject")) { // $NON-NLS-1$ + return null; + } boolean checkIfBinary = false; ICElement celement = null; try { @@ -284,7 +292,7 @@ public class CModelManager implements IResourceChangeListener, ICDescriptorListe cfolder = cfolder.getCContainer(segments[j]); } - if (CoreModel.isValidTranslationUnitName(fileName)) { + if (CoreModel.isValidTranslationUnitName(cproject.getProject(), fileName)) { celement = cfolder.getTranslationUnit(fileName); } else if (cproject.isOnOutputEntry(file)) { IBinaryFile bin = createBinaryFile(file); diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProjectInfo.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProjectInfo.java index ed68b815280..c4d985e7d29 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProjectInfo.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProjectInfo.java @@ -106,7 +106,7 @@ class CProjectInfo extends OpenableInfo { case IResource.FILE: { String filename = member.getName(); if (srcIsProject) { - if (CoreModel.isValidTranslationUnitName(filename) + if (CoreModel.isValidTranslationUnitName(cproject.getProject(), filename) && !CoreModelUtil.isExcluded(member, exclusionPatterns)) { continue; } else if (!CoreModelUtil.isExcluded(member, exclusionPatterns)) { diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java index cdd5a1d4376..34863f257b8 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java @@ -607,7 +607,7 @@ public class DeltaProcessor { String filename = resource.getName(); - if (CoreModel.isValidHeaderUnitName(filename)) { + if (CoreModel.isValidHeaderUnitName(resource.getProject(), filename)) { indexManager.updateDependencies(resource); } } diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeReference.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeReference.java index 426224a3d97..44eba2b4836 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeReference.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeReference.java @@ -109,7 +109,8 @@ public class IncludeReference extends Openable implements IIncludeReference { ICElement celement = null; if (child.isDirectory()) { celement = new IncludeReference(this, fIncludeEntry, new Path(child.getAbsolutePath())); - } else if (CoreModel.isValidTranslationUnitName(names[i]) && child.isFile()) { + } else if (CoreModel.isValidTranslationUnitName(getCProject().getProject(), names[i]) && + child.isFile()) { celement = new ExternalTranslationUnit(this, path.append(names[i])); } if (celement != null) { diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryManager.java index 07a663b6ca6..f1afda40f50 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryManager.java @@ -102,8 +102,9 @@ public class PathEntryManager implements IPathEntryStoreListener, IElementChange } public IPathEntry[] getResolvedPathEntries(ICProject cproject) throws CModelException { - boolean markers = cproject.getProject().getWorkspace().isTreeLocked(); - return getResolvedPathEntries(cproject, !markers); + //boolean markers = cproject.getProject().getWorkspace().isTreeLocked(); + //return getResolvedPathEntries(cproject, !markers); + return getResolvedPathEntries(cproject, false); } public IPathEntry[] getResolvedPathEntries(ICProject cproject, boolean generateMarkers) throws CModelException { diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/TranslationUnit.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/TranslationUnit.java index 57acce9bcbb..39b41a113a7 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/TranslationUnit.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/TranslationUnit.java @@ -532,14 +532,16 @@ public class TranslationUnit extends Openable implements ITranslationUnit { * @see org.eclipse.cdt.core.model.ITranslationUnit#isHeaderUnit() */ public boolean isHeaderUnit() { - return CoreModel.isValidHeaderUnitName(getPath().lastSegment()); + IProject project = getCProject().getProject(); + return CoreModel.isValidHeaderUnitName(project, getPath().lastSegment()); } /* (non-Javadoc) * @see org.eclipse.cdt.core.model.ITranslationUnit#isSourceUnit() */ public boolean isSourceUnit() { - return CoreModel.isValidSourceUnitName(getPath().lastSegment()); + IProject project = getCProject().getProject(); + return CoreModel.isValidSourceUnitName(project, getPath().lastSegment()); } /* (non-Javadoc) diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java index 90354164f66..cfbd102a160 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java @@ -662,22 +662,6 @@ public class CCorePlugin extends Plugin { return new DefaultPathEntryStore(project); } - /** - * Returns the file type object corresponding to the provided - * file name, using the workspace resolver. - * - * If no file type object exists, a default file type object is - * returned. - * - * @param fileName Name of the file to resolve type info for. - * - * @return File type object for the provided file name, in the - * context of the workspace - */ - public ICFileType getFileType(String fileName) { - return getFileTypeResolver().getFileType(fileName); - } - /** * Returns the file type object corresponding to the provided * file name. @@ -695,17 +679,6 @@ public class CCorePlugin extends Plugin { return getFileTypeResolver(project).getFileType(fileName); } - /** - * Return the file type resolver for the workspace. - * - * @param project Project to get file type resolver for. - * - * @return File type resolver for the project. - */ - public ICFileTypeResolver getFileTypeResolver() { - return getResolverModel().getResolver(); - } - /** * Return the file type resolver for the specified project. * Specifying a null project returns the file type resolver diff --git a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/ui/browser/typeinfo/TypeInfoLabelProvider.java b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/ui/browser/typeinfo/TypeInfoLabelProvider.java index a6516e1a352..7488d8484f0 100644 --- a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/ui/browser/typeinfo/TypeInfoLabelProvider.java +++ b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/ui/browser/typeinfo/TypeInfoLabelProvider.java @@ -109,7 +109,7 @@ public class TypeInfoLabelProvider extends LabelProvider { ITypeReference ref = typeRef.getResolvedReference(); if (ref != null) { path = ref.getPath(); - if (CoreModel.isValidHeaderUnitName(path.lastSegment())) { + if (CoreModel.isValidHeaderUnitName(typeRef.getEnclosingProject(), path.lastSegment())) { return HEADER_ICON; } } diff --git a/core/org.eclipse.cdt.ui/refactor/org/eclipse/cdt/internal/corext/refactoring/UndoManager.java b/core/org.eclipse.cdt.ui/refactor/org/eclipse/cdt/internal/corext/refactoring/UndoManager.java index 8e3f988d32e..bf5b505d8e9 100644 --- a/core/org.eclipse.cdt.ui/refactor/org/eclipse/cdt/internal/corext/refactoring/UndoManager.java +++ b/core/org.eclipse.cdt.ui/refactor/org/eclipse/cdt/internal/corext/refactoring/UndoManager.java @@ -103,7 +103,7 @@ public class UndoManager implements IUndoManager { IResource resource= delta.getResource(); if (resource.getType() == IResource.FILE && delta.getKind() == IResourceDelta.CHANGED && (delta.getFlags() & IResourceDelta.CONTENT) != 0) { - if(CoreModel.getDefault().isValidTranslationUnitName(resource.getName())) { + if(CoreModel.isValidTranslationUnitName(resource.getProject(), resource.getName())) { ITranslationUnit unit= (ITranslationUnit)CoreModel.getDefault().create((IFile)resource); if (unit != null && unit.exists()) { flush(); diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementSorter.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementSorter.java index feedf813af8..ea8a3322662 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementSorter.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementSorter.java @@ -112,24 +112,12 @@ public class CElementSorter extends ViewerSorter { } else if (element instanceof ICContainer) { return CCONTAINERS; } else if (element instanceof ITranslationUnit) { - IResource res = null; - res = ((ITranslationUnit)element).getUnderlyingResource(); - if (res != null) { - String ext = res.getFileExtension(); - if (ext != null) { - String[] headers = CoreModel.getDefault().getHeaderExtensions(); - for (int i = 0; i < headers.length; i++) { - if (ext.equals(headers[i])) { - return TRANSLATIONUNIT_HEADERS; - } - } - String[] sources = CoreModel.getDefault().getSourceExtensions(); - for (int i = 0; i < sources.length; i++) { - if (ext.equals(sources[i])) { - return TRANSLATIONUNIT_SOURCE; - } - } - } + ITranslationUnit tu = (ITranslationUnit)element; + if (CoreModel.isValidHeaderUnitName(tu.getCProject().getProject(), tu.getElementName())) { + return TRANSLATIONUNIT_HEADERS; + } + if (CoreModel.isValidSourceUnitName(tu.getCProject().getProject(), tu.getElementName())) { + return TRANSLATIONUNIT_SOURCE; } return TRANSLATIONUNITS; } else if (element instanceof IInclude) {