diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java index dadcb92e928..98149257a99 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java @@ -59,7 +59,7 @@ public class SourceIndexer extends AbstractIndexer { // Create a new Parser SourceIndexerRequestor requestor = new SourceIndexerRequestor(this, document); IParser parser = ParserFactory.createParser( - ParserFactory.createScanner( new StringReader( document.getStringContent() ), document.getName(), new ScannerInfo(), ParserMode.QUICK_PARSE, requestor ), + ParserFactory.createScanner( new StringReader( document.getStringContent() ), resourceFile.getLocation().toOSString(), new ScannerInfo(), ParserMode.COMPLETE_PARSE, requestor ), requestor, ParserMode.COMPLETE_PARSE); try{ parser.parse(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTEnumerationSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTEnumerationSpecifier.java index 27c93813e6d..d564b97c76a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTEnumerationSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTEnumerationSpecifier.java @@ -38,7 +38,7 @@ public class ASTEnumerationSpecifier { super(symbol); setStartingOffset(startingOffset); - setNameOffset( startingOffset ); + setNameOffset( nameOffset ); qualifiedName = new ASTQualifiedNamedElement( getOwnerScope(), symbol.getName() ); } diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/FunctionDeclarationPattern.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/FunctionDeclarationPattern.java index 51e6c2d7f19..ef8ad6c649c 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/FunctionDeclarationPattern.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/FunctionDeclarationPattern.java @@ -67,7 +67,7 @@ public class FunctionDeclarationPattern extends CSearchPattern { return IMPOSSIBLE_MATCH; } - if( parameterNames != null ){ + if( parameterNames != null && parameterNames.length > 0 ){ Iterator params = function.getParameters(); diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java index 09356a435ac..34728918242 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java @@ -265,6 +265,8 @@ public class MatchLocator implements ISourceElementRequestor, ICSearchConstants if( i > 0 && pathString.equals( paths[ i - 1 ] ) ) continue; Reader reader = null; + + IPath realPath = null; if( workspaceRoot != null ){ IWorkingCopy workingCopy = (IWorkingCopy)wcPaths.get( pathString ); @@ -283,6 +285,7 @@ public class MatchLocator implements ISourceElementRequestor, ICSearchConstants if( currentResource != null && currentResource instanceof IFile ){ IFile file = (IFile) currentResource; reader = new InputStreamReader( file.getContents() ); + realPath = currentResource.getLocation(); } else continue; } catch ( CoreException e ){ continue; @@ -292,12 +295,13 @@ public class MatchLocator implements ISourceElementRequestor, ICSearchConstants try { currentPath = path; reader = new FileReader( path.toFile() ); + realPath = currentPath; } catch (FileNotFoundException e) { continue; } } - IScanner scanner = ParserFactory.createScanner( reader, pathString, new ScannerInfo(), ParserMode.QUICK_PARSE, this ); + IScanner scanner = ParserFactory.createScanner( reader, realPath.toOSString(), new ScannerInfo(), ParserMode.COMPLETE_PARSE, this ); IParser parser = ParserFactory.createParser( scanner, this, ParserMode.COMPLETE_PARSE ); parser.parse();