mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-04 14:55:41 +02:00
<BR>org.eclipse.cdt.core
<BR> Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=55785. <BR> Fix required update to ISourceElementRequestor interface : clients updated accordingly. <BR> <BR>org.eclipse.cdt.core.tests <BR> Updated clients for ISourceElementRequestor.createReader() updates. <BR> <BR>org.eclipse.cdt.ui <BR> Updated CompletionEngine to use shared working copies when parsing include files. <BR> Updated clients for ISourceElementRequestor.createReader() updates.
This commit is contained in:
parent
a1f408bc47
commit
68365e4ac0
39 changed files with 145 additions and 60 deletions
|
@ -1,3 +1,6 @@
|
||||||
|
2004-04-11 John Camelon
|
||||||
|
Updated clients for ISourceElementRequestor.createReader() updates.
|
||||||
|
|
||||||
2004-04-10 John Camelon
|
2004-04-10 John Camelon
|
||||||
Updated ScannerTestCase to correspond with changes to IToken and its implementations.
|
Updated ScannerTestCase to correspond with changes to IToken and its implementations.
|
||||||
|
|
||||||
|
|
|
@ -1346,7 +1346,7 @@ public class ManagedBuildTests extends TestCase {
|
||||||
ISourceElementRequestor callback = new NullSourceElementRequestor();
|
ISourceElementRequestor callback = new NullSourceElementRequestor();
|
||||||
|
|
||||||
IScanner scanner = ParserFactory.createScanner( new StringReader( "#include <header.h>\n int A::i = 1;" ),
|
IScanner scanner = ParserFactory.createScanner( new StringReader( "#include <header.h>\n int A::i = 1;" ),
|
||||||
"TEST", info, ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, callback, new NullLogService());
|
"TEST", info, ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, callback, new NullLogService(), null);
|
||||||
|
|
||||||
IParser parser = ParserFactory.createParser( scanner, callback, ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, null );
|
IParser parser = ParserFactory.createParser( scanner, callback, ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, null );
|
||||||
assertTrue( parser.parse() );
|
assertTrue( parser.parse() );
|
||||||
|
|
|
@ -58,7 +58,7 @@ public class AutomatedTest extends AutomatedFramework {
|
||||||
|
|
||||||
String filePath = file.getCanonicalPath();
|
String filePath = file.getCanonicalPath();
|
||||||
ParserLanguage language = ((String)natures.get( filePath )).equalsIgnoreCase("cpp") ? ParserLanguage.CPP : ParserLanguage.C;
|
ParserLanguage language = ((String)natures.get( filePath )).equalsIgnoreCase("cpp") ? ParserLanguage.CPP : ParserLanguage.C;
|
||||||
parser = ParserFactory.createParser( ParserFactory.createScanner( new InputStreamReader (stream), filePath, new ScannerInfo(), ParserMode.QUICK_PARSE, language, nullCallback, null ), nullCallback, ParserMode.QUICK_PARSE, language, null);
|
parser = ParserFactory.createParser( ParserFactory.createScanner( new InputStreamReader (stream), filePath, new ScannerInfo(), ParserMode.QUICK_PARSE, language, nullCallback, null, null ), nullCallback, ParserMode.QUICK_PARSE, language, null);
|
||||||
|
|
||||||
mapping = ParserFactory.createLineOffsetReconciler( new InputStreamReader( stream ) );
|
mapping = ParserFactory.createLineOffsetReconciler( new InputStreamReader( stream ) );
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ public class BaseASTTest extends TestCase
|
||||||
{
|
{
|
||||||
ParserMode mode = quick ? ParserMode.QUICK_PARSE : ParserMode.COMPLETE_PARSE;
|
ParserMode mode = quick ? ParserMode.QUICK_PARSE : ParserMode.COMPLETE_PARSE;
|
||||||
quickParseCallback = ParserFactory.createQuickParseCallback();
|
quickParseCallback = ParserFactory.createQuickParseCallback();
|
||||||
parser = ParserFactory.createParser( ParserFactory.createScanner( new StringReader( code ), "code", new ScannerInfo(), mode, lang, quickParseCallback, new NullLogService()), quickParseCallback, mode, lang, null );
|
parser = ParserFactory.createParser( ParserFactory.createScanner( new StringReader( code ), "code", new ScannerInfo(), mode, lang, quickParseCallback, new NullLogService(), null), quickParseCallback, mode, lang, null );
|
||||||
if( ! parser.parse() && throwExceptionOnError )
|
if( ! parser.parse() && throwExceptionOnError )
|
||||||
throw new ParserException("Parse failure");
|
throw new ParserException("Parse failure");
|
||||||
return quickParseCallback.getCompilationUnit();
|
return quickParseCallback.getCompilationUnit();
|
||||||
|
|
|
@ -47,7 +47,7 @@ public class BaseScannerTest extends TestCase {
|
||||||
|
|
||||||
protected void initializeScanner( String input, ParserMode mode, ISourceElementRequestor requestor ) throws ParserFactoryError
|
protected void initializeScanner( String input, ParserMode mode, ISourceElementRequestor requestor ) throws ParserFactoryError
|
||||||
{
|
{
|
||||||
scanner= ParserFactory.createScanner( new StringReader(input),"TEXT", new ScannerInfo(), mode, ParserLanguage.CPP, requestor, null );
|
scanner= ParserFactory.createScanner( new StringReader(input),"TEXT", new ScannerInfo(), mode, ParserLanguage.CPP, requestor, null, null );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void initializeScanner(String input) throws ParserFactoryError
|
protected void initializeScanner(String input) throws ParserFactoryError
|
||||||
|
|
|
@ -67,7 +67,7 @@ public class CompleteParseASTSymbolIteratorTest extends CompleteParseBaseTest {
|
||||||
callback = new CompilationUnitCallback();
|
callback = new CompilationUnitCallback();
|
||||||
IParser parser = ParserFactory.createParser(
|
IParser parser = ParserFactory.createParser(
|
||||||
ParserFactory.createScanner( new StringReader( code ), "test-code", new ScannerInfo(),
|
ParserFactory.createScanner( new StringReader( code ), "test-code", new ScannerInfo(),
|
||||||
ParserMode.COMPLETE_PARSE, language, callback, new NullLogService() ), callback, ParserMode.COMPLETE_PARSE, language, null
|
ParserMode.COMPLETE_PARSE, language, callback, new NullLogService(), null ), callback, ParserMode.COMPLETE_PARSE, language, null
|
||||||
);
|
);
|
||||||
if( ! parser.parse() && throwOnError ) throw new ParserException( "FAILURE");
|
if( ! parser.parse() && throwOnError ) throw new ParserException( "FAILURE");
|
||||||
|
|
||||||
|
|
|
@ -677,8 +677,8 @@ public class CompleteParseBaseTest extends TestCase
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#createReader(java.lang.String)
|
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#createReader(java.lang.String)
|
||||||
*/
|
*/
|
||||||
public Reader createReader(String finalPath) {
|
public Reader createReader(String finalPath, Iterator workingCopies) {
|
||||||
return ParserUtil.createReader(finalPath);
|
return ParserUtil.createReader(finalPath,workingCopies);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -730,7 +730,7 @@ public class CompleteParseBaseTest extends TestCase
|
||||||
callback = new FullParseCallback();
|
callback = new FullParseCallback();
|
||||||
IParser parser = ParserFactory.createParser(
|
IParser parser = ParserFactory.createParser(
|
||||||
ParserFactory.createScanner( new StringReader( code ), "test-code", new ScannerInfo(),
|
ParserFactory.createScanner( new StringReader( code ), "test-code", new ScannerInfo(),
|
||||||
ParserMode.COMPLETE_PARSE, language, callback, new NullLogService() ), callback, ParserMode.COMPLETE_PARSE, language, null
|
ParserMode.COMPLETE_PARSE, language, callback, new NullLogService(), null ), callback, ParserMode.COMPLETE_PARSE, language, null
|
||||||
);
|
);
|
||||||
if( ! parser.parse() && throwOnError ) throw new ParserException( "FAILURE");
|
if( ! parser.parse() && throwOnError ) throw new ParserException( "FAILURE");
|
||||||
return callback.getCompilationUnit();
|
return callback.getCompilationUnit();
|
||||||
|
|
|
@ -65,7 +65,7 @@ public class CompletionParseTest extends CompleteParseBaseTest {
|
||||||
ParserMode.COMPLETION_PARSE,
|
ParserMode.COMPLETION_PARSE,
|
||||||
ParserLanguage.CPP,
|
ParserLanguage.CPP,
|
||||||
callback,
|
callback,
|
||||||
new NullLogService()),
|
new NullLogService(), null),
|
||||||
callback,
|
callback,
|
||||||
ParserMode.COMPLETION_PARSE,
|
ParserMode.COMPLETION_PARSE,
|
||||||
ParserLanguage.CPP,
|
ParserLanguage.CPP,
|
||||||
|
|
|
@ -28,7 +28,7 @@ public class ExprEvalTest extends TestCase {
|
||||||
public void runTest(String code, int expectedValue) throws Exception {
|
public void runTest(String code, int expectedValue) throws Exception {
|
||||||
|
|
||||||
final NullSourceElementRequestor nullCallback = new NullSourceElementRequestor();
|
final NullSourceElementRequestor nullCallback = new NullSourceElementRequestor();
|
||||||
IExpressionParser parser = InternalParserUtil.createExpressionParser(ParserFactory.createScanner( new StringReader( code ), getClass().getName(), new ScannerInfo(), null, ParserLanguage.CPP, nullCallback, new NullLogService() ), ParserLanguage.CPP, null );
|
IExpressionParser parser = InternalParserUtil.createExpressionParser(ParserFactory.createScanner( new StringReader( code ), getClass().getName(), new ScannerInfo(), null, ParserLanguage.CPP, nullCallback, new NullLogService(), null ), ParserLanguage.CPP, null );
|
||||||
IASTExpression expression = parser.expression(null,null);
|
IASTExpression expression = parser.expression(null,null);
|
||||||
assertEquals(expectedValue, expression.evaluateExpression());
|
assertEquals(expectedValue, expression.evaluateExpression());
|
||||||
}
|
}
|
||||||
|
|
|
@ -242,7 +242,7 @@ public class FractionalAutomatedTest extends AutomatedFramework {
|
||||||
result = null;
|
result = null;
|
||||||
ParserLanguage language = cppNature ? ParserLanguage.CPP : ParserLanguage.C;
|
ParserLanguage language = cppNature ? ParserLanguage.CPP : ParserLanguage.C;
|
||||||
IParser parser = ParserFactory.createParser(
|
IParser parser = ParserFactory.createParser(
|
||||||
ParserFactory.createScanner( new StringReader( code ), null, new ScannerInfo(), ParserMode.QUICK_PARSE, language, nullCallback, new NullLogService() ), nullCallback, ParserMode.QUICK_PARSE, language, null );
|
ParserFactory.createScanner( new StringReader( code ), null, new ScannerInfo(), ParserMode.QUICK_PARSE, language, nullCallback, new NullLogService(), null ), nullCallback, ParserMode.QUICK_PARSE, language, null );
|
||||||
|
|
||||||
parser.parse();
|
parser.parse();
|
||||||
} catch ( Exception e ){
|
} catch ( Exception e ){
|
||||||
|
|
|
@ -36,7 +36,7 @@ public class PreprocessorConditionalTest extends BaseScannerTest
|
||||||
|
|
||||||
protected void initializeScanner(String input, Map definitions ) throws Exception
|
protected void initializeScanner(String input, Map definitions ) throws Exception
|
||||||
{
|
{
|
||||||
scanner= ParserFactory.createScanner( new StringReader(input),"TEXT", new ScannerInfo( definitions ), ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, nullSourceElementRequestor, null );
|
scanner= ParserFactory.createScanner( new StringReader(input),"TEXT", new ScannerInfo( definitions ), ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, nullSourceElementRequestor, null, null );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,7 @@ public class PreprocessorTest extends TestCase {
|
||||||
public IPreprocessor setupPreprocessor( String text, List includePaths, Map defns, ISourceElementRequestor rq )
|
public IPreprocessor setupPreprocessor( String text, List includePaths, Map defns, ISourceElementRequestor rq )
|
||||||
{
|
{
|
||||||
IPreprocessor p = ParserFactory.createPreprocessor( new StringReader( text ), "test", new ScannerInfo( defns,
|
IPreprocessor p = ParserFactory.createPreprocessor( new StringReader( text ), "test", new ScannerInfo( defns,
|
||||||
includePaths == null ? null : (String [])includePaths.toArray()), ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, rq, null );
|
includePaths == null ? null : (String [])includePaths.toArray()), ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, rq, null, null );
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,7 @@ public class SelectionParseTest extends CompleteParseBaseTest {
|
||||||
ParserMode.SELECTION_PARSE,
|
ParserMode.SELECTION_PARSE,
|
||||||
ParserLanguage.CPP,
|
ParserLanguage.CPP,
|
||||||
callback,
|
callback,
|
||||||
new NullLogService()),
|
new NullLogService(), null),
|
||||||
callback,
|
callback,
|
||||||
ParserMode.SELECTION_PARSE,
|
ParserMode.SELECTION_PARSE,
|
||||||
ParserLanguage.CPP,
|
ParserLanguage.CPP,
|
||||||
|
|
|
@ -281,7 +281,7 @@ public class TortureTest extends FractionalAutomatedTest {
|
||||||
ParserMode parserMode = quickParse ? ParserMode.QUICK_PARSE : ParserMode.COMPLETE_PARSE;
|
ParserMode parserMode = quickParse ? ParserMode.QUICK_PARSE : ParserMode.COMPLETE_PARSE;
|
||||||
ParserLanguage language = cppNature ? ParserLanguage.CPP : ParserLanguage.C;
|
ParserLanguage language = cppNature ? ParserLanguage.CPP : ParserLanguage.C;
|
||||||
parser = ParserFactory.createParser(
|
parser = ParserFactory.createParser(
|
||||||
ParserFactory.createScanner( new StringReader( code ), null, new ScannerInfo(), parserMode, language, nullCallback, new NullLogService() ), nullCallback, parserMode, language, null);
|
ParserFactory.createScanner( new StringReader( code ), null, new ScannerInfo(), parserMode, language, nullCallback, new NullLogService(), null ), nullCallback, parserMode, language, null);
|
||||||
|
|
||||||
mapping = ParserFactory.createLineOffsetReconciler( new StringReader( code ) );
|
mapping = ParserFactory.createLineOffsetReconciler( new StringReader( code ) );
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,7 @@ public class ParseTestOnSearchFiles extends TestCase
|
||||||
public void testParseOfAndrewsFile() throws Exception
|
public void testParseOfAndrewsFile() throws Exception
|
||||||
{
|
{
|
||||||
ISourceElementRequestor requestor = new NullSourceElementRequestor();
|
ISourceElementRequestor requestor = new NullSourceElementRequestor();
|
||||||
IScanner scanner = ParserFactory.createScanner( new InputStreamReader( fileIn ), fullPathName, new ScannerInfo(), ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, requestor, new NullLogService() );
|
IScanner scanner = ParserFactory.createScanner( new InputStreamReader( fileIn ), fullPathName, new ScannerInfo(), ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, requestor, new NullLogService(), null );
|
||||||
IParser parser = ParserFactory.createParser( scanner, requestor, ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, null );
|
IParser parser = ParserFactory.createParser( scanner, requestor, ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, null );
|
||||||
assertTrue( parser.parse() );
|
assertTrue( parser.parse() );
|
||||||
}
|
}
|
||||||
|
|
|
@ -377,8 +377,8 @@ public class TypeMatchLocator implements ISourceElementRequestor, ICSearchConsta
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#createReader(java.lang.String)
|
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#createReader(java.lang.String)
|
||||||
*/
|
*/
|
||||||
public Reader createReader(String finalPath) {
|
public Reader createReader(String finalPath, Iterator workingCopies) {
|
||||||
return ParserUtil.createReader(finalPath);
|
return ParserUtil.createReader(finalPath, workingCopies);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -499,7 +499,7 @@ public class TypeMatchLocator implements ISourceElementRequestor, ICSearchConsta
|
||||||
IParser parser = null;
|
IParser parser = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
IScanner scanner = ParserFactory.createScanner( reader, realPath.toOSString(), scanInfo, ParserMode.COMPLETE_PARSE, language, this, ParserUtil.getScannerLogService() );
|
IScanner scanner = ParserFactory.createScanner( reader, realPath.toOSString(), scanInfo, ParserMode.COMPLETE_PARSE, language, this, ParserUtil.getScannerLogService(), null );
|
||||||
parser = ParserFactory.createParser( scanner, this, ParserMode.STRUCTURAL_PARSE, language, ParserUtil.getParserLogService() );
|
parser = ParserFactory.createParser( scanner, this, ParserMode.STRUCTURAL_PARSE, language, ParserUtil.getParserLogService() );
|
||||||
}
|
}
|
||||||
catch( ParserFactoryError pfe )
|
catch( ParserFactoryError pfe )
|
||||||
|
|
|
@ -97,7 +97,7 @@ public class SourceIndexer extends AbstractIndexer {
|
||||||
|
|
||||||
BufferedInputStream inStream = new BufferedInputStream(resourceFile.getContents());
|
BufferedInputStream inStream = new BufferedInputStream(resourceFile.getContents());
|
||||||
parser = ParserFactory.createParser(
|
parser = ParserFactory.createParser(
|
||||||
ParserFactory.createScanner( new BufferedReader(new InputStreamReader(inStream)), resourceFile.getLocation().toOSString(), scanInfo, ParserMode.COMPLETE_PARSE, language, requestor, ParserUtil.getScannerLogService() ),
|
ParserFactory.createScanner( new BufferedReader(new InputStreamReader(inStream)), resourceFile.getLocation().toOSString(), scanInfo, ParserMode.COMPLETE_PARSE, language, requestor, ParserUtil.getScannerLogService(), null ),
|
||||||
requestor, ParserMode.COMPLETE_PARSE, language, ParserUtil.getParserLogService() );
|
requestor, ParserMode.COMPLETE_PARSE, language, ParserUtil.getParserLogService() );
|
||||||
} catch( ParserFactoryError pfe )
|
} catch( ParserFactoryError pfe )
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,7 +15,9 @@ package org.eclipse.cdt.internal.core.search.indexing;
|
||||||
* @author bgheorgh
|
* @author bgheorgh
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.model.ICModelMarker;
|
import org.eclipse.cdt.core.model.ICModelMarker;
|
||||||
|
@ -525,8 +527,8 @@ public class SourceIndexerRequestor implements ISourceElementRequestor, IIndexCo
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#createReader(java.lang.String)
|
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#createReader(java.lang.String)
|
||||||
*/
|
*/
|
||||||
public Reader createReader(String finalPath) {
|
public Reader createReader(String finalPath, Iterator workingCopies) {
|
||||||
return ParserUtil.createReader(finalPath);
|
return ParserUtil.createReader(finalPath,workingCopies);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -131,7 +131,7 @@ public class CModelBuilder {
|
||||||
mode,
|
mode,
|
||||||
language,
|
language,
|
||||||
quickParseCallback,
|
quickParseCallback,
|
||||||
quickParseMode ? new NullLogService() : ParserUtil.getScannerLogService())
|
quickParseMode ? new NullLogService() : ParserUtil.getScannerLogService(), null)
|
||||||
,quickParseCallback,
|
,quickParseCallback,
|
||||||
mode,
|
mode,
|
||||||
language,
|
language,
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
2004-04-11 John Camelon
|
||||||
|
Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=55785.
|
||||||
|
Fix required update to ISourceElementRequestor interface : clients updated accordingly.
|
||||||
|
|
||||||
2004-04-11 John Camelon
|
2004-04-11 John Camelon
|
||||||
Updated errorhandling in Parser::translationUnit().
|
Updated errorhandling in Parser::translationUnit().
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
package org.eclipse.cdt.core.parser;
|
package org.eclipse.cdt.core.parser;
|
||||||
|
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
|
import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
|
import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
|
||||||
|
@ -111,7 +112,7 @@ public interface ISourceElementRequestor {
|
||||||
* @param finalPath
|
* @param finalPath
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public Reader createReader(String finalPath);
|
public Reader createReader(String finalPath, Iterator workingCopies );
|
||||||
/**
|
/**
|
||||||
* The parser asks the client if it wishes to time out
|
* The parser asks the client if it wishes to time out
|
||||||
* in case it is taking more than the expected time.
|
* in case it is taking more than the expected time.
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package org.eclipse.cdt.core.parser;
|
package org.eclipse.cdt.core.parser;
|
||||||
|
|
||||||
|
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
|
import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
|
import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
|
||||||
|
@ -457,7 +459,7 @@ public class NullSourceElementRequestor implements ISourceElementRequestor
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#createReader(java.lang.String)
|
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#createReader(java.lang.String)
|
||||||
*/
|
*/
|
||||||
public Reader createReader(String finalPath) {
|
public Reader createReader(String finalPath, Iterator workingCopies) {
|
||||||
return InternalParserUtil.createFileReader( finalPath );
|
return InternalParserUtil.createFileReader( finalPath );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
package org.eclipse.cdt.core.parser;
|
package org.eclipse.cdt.core.parser;
|
||||||
|
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTFactory;
|
import org.eclipse.cdt.core.parser.ast.IASTFactory;
|
||||||
import org.eclipse.cdt.core.parser.extension.ExtensionDialect;
|
import org.eclipse.cdt.core.parser.extension.ExtensionDialect;
|
||||||
|
@ -68,7 +69,7 @@ public class ParserFactory {
|
||||||
return new QuickParser( scanner, ourCallback, language, logService );
|
return new QuickParser( scanner, ourCallback, language, logService );
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IScanner createScanner( Reader input, String fileName, IScannerInfo config, ParserMode mode, ParserLanguage language, ISourceElementRequestor requestor, IParserLogService log ) throws ParserFactoryError
|
public static IScanner createScanner( Reader input, String fileName, IScannerInfo config, ParserMode mode, ParserLanguage language, ISourceElementRequestor requestor, IParserLogService log, List workingCopies ) throws ParserFactoryError
|
||||||
{
|
{
|
||||||
if( input == null ) throw new ParserFactoryError( ParserFactoryError.Kind.NULL_READER );
|
if( input == null ) throw new ParserFactoryError( ParserFactoryError.Kind.NULL_READER );
|
||||||
if( fileName == null ) throw new ParserFactoryError( ParserFactoryError.Kind.NULL_FILENAME );
|
if( fileName == null ) throw new ParserFactoryError( ParserFactoryError.Kind.NULL_FILENAME );
|
||||||
|
@ -77,11 +78,11 @@ public class ParserFactory {
|
||||||
IParserLogService logService = ( log == null ) ? createDefaultLogService() : log;
|
IParserLogService logService = ( log == null ) ? createDefaultLogService() : log;
|
||||||
ParserMode ourMode = ( (mode == null )? ParserMode.COMPLETE_PARSE : mode );
|
ParserMode ourMode = ( (mode == null )? ParserMode.COMPLETE_PARSE : mode );
|
||||||
ISourceElementRequestor ourRequestor = (( requestor == null) ? new NullSourceElementRequestor() : requestor );
|
ISourceElementRequestor ourRequestor = (( requestor == null) ? new NullSourceElementRequestor() : requestor );
|
||||||
IScanner s = new Scanner( input, fileName, config, ourRequestor, ourMode, language, logService, extensionFactory.createScannerExtension() );
|
IScanner s = new Scanner( input, fileName, config, ourRequestor, ourMode, language, logService, extensionFactory.createScannerExtension(), workingCopies );
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IPreprocessor createPreprocessor( Reader input, String fileName, IScannerInfo info, ParserMode mode, ParserLanguage language, ISourceElementRequestor requestor, IParserLogService logService )
|
public static IPreprocessor createPreprocessor( Reader input, String fileName, IScannerInfo info, ParserMode mode, ParserLanguage language, ISourceElementRequestor requestor, IParserLogService logService, List workingCopies )
|
||||||
{
|
{
|
||||||
if( input == null ) throw new ParserFactoryError( ParserFactoryError.Kind.NULL_READER );
|
if( input == null ) throw new ParserFactoryError( ParserFactoryError.Kind.NULL_READER );
|
||||||
if( fileName == null ) throw new ParserFactoryError( ParserFactoryError.Kind.NULL_FILENAME );
|
if( fileName == null ) throw new ParserFactoryError( ParserFactoryError.Kind.NULL_FILENAME );
|
||||||
|
@ -90,7 +91,7 @@ public class ParserFactory {
|
||||||
IParserLogService log = ( logService == null ) ? createDefaultLogService() : logService;
|
IParserLogService log = ( logService == null ) ? createDefaultLogService() : logService;
|
||||||
ParserMode ourMode = ( (mode == null )? ParserMode.COMPLETE_PARSE : mode );
|
ParserMode ourMode = ( (mode == null )? ParserMode.COMPLETE_PARSE : mode );
|
||||||
ISourceElementRequestor ourRequestor = (( requestor == null) ? new NullSourceElementRequestor() : requestor );
|
ISourceElementRequestor ourRequestor = (( requestor == null) ? new NullSourceElementRequestor() : requestor );
|
||||||
IPreprocessor s = new Preprocessor( input, fileName, info, ourRequestor, ourMode, language, log, extensionFactory.createScannerExtension() );
|
IPreprocessor s = new Preprocessor( input, fileName, info, ourRequestor, ourMode, language, log, extensionFactory.createScannerExtension(), workingCopies );
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -137,7 +137,7 @@ public class GCCScannerExtension implements IScannerExtension {
|
||||||
// search through include paths
|
// search through include paths
|
||||||
while (iter.hasNext()) {
|
while (iter.hasNext()) {
|
||||||
String path = (String)iter.next();
|
String path = (String)iter.next();
|
||||||
duple = ScannerUtility.createReaderDuple( path, parsedDirective.getFilename(), scannerData.getClientRequestor() );
|
duple = ScannerUtility.createReaderDuple( path, parsedDirective.getFilename(), scannerData.getClientRequestor(), scannerData.getWorkingCopies() );
|
||||||
if( duple != null )
|
if( duple != null )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
package org.eclipse.cdt.internal.core.parser.scanner;
|
package org.eclipse.cdt.internal.core.parser.scanner;
|
||||||
|
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -80,4 +81,6 @@ public interface IScannerData {
|
||||||
* @param empty_map
|
* @param empty_map
|
||||||
*/
|
*/
|
||||||
public abstract void setDefinitions(Map map);
|
public abstract void setDefinitions(Map map);
|
||||||
|
|
||||||
|
public Iterator getWorkingCopies();
|
||||||
}
|
}
|
|
@ -11,6 +11,7 @@
|
||||||
package org.eclipse.cdt.internal.core.parser.scanner;
|
package org.eclipse.cdt.internal.core.parser.scanner;
|
||||||
|
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.parser.EndOfFileException;
|
import org.eclipse.cdt.core.parser.EndOfFileException;
|
||||||
import org.eclipse.cdt.core.parser.IParserLogService;
|
import org.eclipse.cdt.core.parser.IParserLogService;
|
||||||
|
@ -34,8 +35,8 @@ public class Preprocessor extends Scanner implements IPreprocessor {
|
||||||
* @param filename
|
* @param filename
|
||||||
* @param defns
|
* @param defns
|
||||||
*/
|
*/
|
||||||
public Preprocessor(Reader reader, String filename, IScannerInfo info, ISourceElementRequestor requestor, ParserMode mode, ParserLanguage language, IParserLogService logService, IScannerExtension scannerExtension ) {
|
public Preprocessor(Reader reader, String filename, IScannerInfo info, ISourceElementRequestor requestor, ParserMode mode, ParserLanguage language, IParserLogService logService, IScannerExtension scannerExtension, List workingCopies ) {
|
||||||
super(reader, filename, info, requestor, mode, language, logService, scannerExtension );
|
super(reader, filename, info, requestor, mode, language, logService, scannerExtension, workingCopies );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void process()
|
public void process()
|
||||||
|
|
|
@ -108,7 +108,7 @@ public class Scanner implements IScanner {
|
||||||
Scanner( Reader reader, String filename, Map definitions, List includePaths, ISourceElementRequestor requestor, ParserMode mode, ParserLanguage language, IParserLogService log, IScannerExtension extension )
|
Scanner( Reader reader, String filename, Map definitions, List includePaths, ISourceElementRequestor requestor, ParserMode mode, ParserLanguage language, IParserLogService log, IScannerExtension extension )
|
||||||
{
|
{
|
||||||
String [] incs = (String [])includePaths.toArray(STRING_ARRAY);
|
String [] incs = (String [])includePaths.toArray(STRING_ARRAY);
|
||||||
scannerData = new ScannerData( this, log, requestor, mode, filename, reader, language, new ScannerInfo( definitions, incs ), new ContextStack( this, log ) );
|
scannerData = new ScannerData( this, log, requestor, mode, filename, reader, language, new ScannerInfo( definitions, incs ), new ContextStack( this, log ), null );
|
||||||
|
|
||||||
scannerExtension = extension;
|
scannerExtension = extension;
|
||||||
if( scannerExtension instanceof GCCScannerExtension )
|
if( scannerExtension instanceof GCCScannerExtension )
|
||||||
|
@ -131,9 +131,9 @@ public class Scanner implements IScanner {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Scanner(Reader reader, String filename, IScannerInfo info, ISourceElementRequestor requestor, ParserMode parserMode, ParserLanguage language, IParserLogService log, IScannerExtension extension ) {
|
public Scanner(Reader reader, String filename, IScannerInfo info, ISourceElementRequestor requestor, ParserMode parserMode, ParserLanguage language, IParserLogService log, IScannerExtension extension, List workingCopies ) {
|
||||||
|
|
||||||
scannerData = new ScannerData( this, log, requestor, parserMode, filename, reader, language, info, new ContextStack( this, log ) );
|
scannerData = new ScannerData( this, log, requestor, parserMode, filename, reader, language, info, new ContextStack( this, log ), workingCopies );
|
||||||
|
|
||||||
scannerExtension = extension;
|
scannerExtension = extension;
|
||||||
if( scannerExtension instanceof GCCScannerExtension )
|
if( scannerExtension instanceof GCCScannerExtension )
|
||||||
|
@ -535,7 +535,7 @@ public class Scanner implements IScanner {
|
||||||
while (iter.hasNext()) {
|
while (iter.hasNext()) {
|
||||||
|
|
||||||
String path = (String)iter.next();
|
String path = (String)iter.next();
|
||||||
duple = ScannerUtility.createReaderDuple( path, fileName, scannerData.getClientRequestor() );
|
duple = ScannerUtility.createReaderDuple( path, fileName, scannerData.getClientRequestor(), scannerData.getWorkingCopies() );
|
||||||
if( duple != null )
|
if( duple != null )
|
||||||
break totalLoop;
|
break totalLoop;
|
||||||
}
|
}
|
||||||
|
@ -546,7 +546,7 @@ public class Scanner implements IScanner {
|
||||||
}
|
}
|
||||||
else // local inclusion
|
else // local inclusion
|
||||||
{
|
{
|
||||||
duple = ScannerUtility.createReaderDuple( new File( scannerData.getContextStack().getCurrentContext().getFilename() ).getParentFile().getAbsolutePath(), fileName, scannerData.getClientRequestor() );
|
duple = ScannerUtility.createReaderDuple( new File( scannerData.getContextStack().getCurrentContext().getFilename() ).getParentFile().getAbsolutePath(), fileName, scannerData.getClientRequestor(), scannerData.getWorkingCopies() );
|
||||||
if( duple != null )
|
if( duple != null )
|
||||||
break totalLoop;
|
break totalLoop;
|
||||||
useIncludePaths = true;
|
useIncludePaths = true;
|
||||||
|
|
|
@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.parser.scanner;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -23,11 +24,13 @@ import org.eclipse.cdt.core.parser.ISourceElementRequestor;
|
||||||
import org.eclipse.cdt.core.parser.ParserLanguage;
|
import org.eclipse.cdt.core.parser.ParserLanguage;
|
||||||
import org.eclipse.cdt.core.parser.ParserMode;
|
import org.eclipse.cdt.core.parser.ParserMode;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTFactory;
|
import org.eclipse.cdt.core.parser.ast.IASTFactory;
|
||||||
|
import org.eclipse.cdt.internal.core.parser.ast.EmptyIterator;
|
||||||
import org.eclipse.cdt.internal.core.parser.problem.IProblemFactory;
|
import org.eclipse.cdt.internal.core.parser.problem.IProblemFactory;
|
||||||
|
|
||||||
|
|
||||||
public class ScannerData implements IScannerData
|
public class ScannerData implements IScannerData
|
||||||
{
|
{
|
||||||
|
private final List workingCopies;
|
||||||
private final ContextStack contextStack;
|
private final ContextStack contextStack;
|
||||||
private IASTFactory astFactory = null;
|
private IASTFactory astFactory = null;
|
||||||
private final ISourceElementRequestor requestor;
|
private final ISourceElementRequestor requestor;
|
||||||
|
@ -42,7 +45,7 @@ public class ScannerData implements IScannerData
|
||||||
private final IScanner scanner;
|
private final IScanner scanner;
|
||||||
private final IScannerInfo originalConfig;
|
private final IScannerInfo originalConfig;
|
||||||
private List includePathNames = new ArrayList();
|
private List includePathNames = new ArrayList();
|
||||||
|
private static final Iterator EMPTY_ITERATOR = new EmptyIterator();
|
||||||
/**
|
/**
|
||||||
* @return Returns the contextStack.
|
* @return Returns the contextStack.
|
||||||
*/
|
*/
|
||||||
|
@ -145,7 +148,7 @@ public class ScannerData implements IScannerData
|
||||||
ParserMode parserMode,
|
ParserMode parserMode,
|
||||||
String filename,
|
String filename,
|
||||||
Reader reader,
|
Reader reader,
|
||||||
ParserLanguage language, IScannerInfo info, ContextStack stack )
|
ParserLanguage language, IScannerInfo info, ContextStack stack, List workingCopies )
|
||||||
{
|
{
|
||||||
this.scanner = scanner;
|
this.scanner = scanner;
|
||||||
this.log = log;
|
this.log = log;
|
||||||
|
@ -156,6 +159,7 @@ public class ScannerData implements IScannerData
|
||||||
this.language = language;
|
this.language = language;
|
||||||
this.originalConfig = info;
|
this.originalConfig = info;
|
||||||
this.contextStack = stack;
|
this.contextStack = stack;
|
||||||
|
this.workingCopies = workingCopies;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -170,4 +174,13 @@ public class ScannerData implements IScannerData
|
||||||
public void setDefinitions(Map map) {
|
public void setDefinitions(Map map) {
|
||||||
definitions = map;
|
definitions = map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.internal.core.parser.scanner.IScannerData#getWorkingCopies()
|
||||||
|
*/
|
||||||
|
public Iterator getWorkingCopies() {
|
||||||
|
if( workingCopies != null )
|
||||||
|
return workingCopies.iterator();
|
||||||
|
return EMPTY_ITERATOR;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -63,10 +63,10 @@ public class ScannerUtility {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static CodeReader createReaderDuple( String path, String fileName, ISourceElementRequestor requestor )
|
static CodeReader createReaderDuple( String path, String fileName, ISourceElementRequestor requestor, Iterator workingCopies )
|
||||||
{
|
{
|
||||||
String finalPath = createReconciledPath(path, fileName);
|
String finalPath = createReconciledPath(path, fileName);
|
||||||
Reader r = requestor.createReader( finalPath );
|
Reader r = requestor.createReader( finalPath, workingCopies );
|
||||||
if( r != null )
|
if( r != null )
|
||||||
return new CodeReader( finalPath, r );
|
return new CodeReader( finalPath, r );
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -186,7 +186,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
ParserMode.QUICK_PARSE,
|
ParserMode.QUICK_PARSE,
|
||||||
ParserLanguage.CPP,
|
ParserLanguage.CPP,
|
||||||
callback,
|
callback,
|
||||||
nullLog);
|
nullLog, null);
|
||||||
} catch (ParserFactoryError e) {
|
} catch (ParserFactoryError e) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -256,7 +256,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
new ScannerInfo(),
|
new ScannerInfo(),
|
||||||
ParserMode.QUICK_PARSE,
|
ParserMode.QUICK_PARSE,
|
||||||
ParserLanguage.CPP,
|
ParserLanguage.CPP,
|
||||||
callback, nullLog);
|
callback, nullLog, null);
|
||||||
} catch (ParserFactoryError e) {
|
} catch (ParserFactoryError e) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -298,7 +298,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
new ScannerInfo(),
|
new ScannerInfo(),
|
||||||
ParserMode.QUICK_PARSE,
|
ParserMode.QUICK_PARSE,
|
||||||
ParserLanguage.CPP,
|
ParserLanguage.CPP,
|
||||||
callback, nullLog);
|
callback, nullLog, null);
|
||||||
} catch (ParserFactoryError e) {
|
} catch (ParserFactoryError e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -357,7 +357,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
new ScannerInfo(),
|
new ScannerInfo(),
|
||||||
ParserMode.QUICK_PARSE,
|
ParserMode.QUICK_PARSE,
|
||||||
ParserLanguage.CPP,
|
ParserLanguage.CPP,
|
||||||
callback, nullLog );
|
callback, nullLog, null );
|
||||||
} catch (ParserFactoryError e1) {
|
} catch (ParserFactoryError e1) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -420,7 +420,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
new ScannerInfo(),
|
new ScannerInfo(),
|
||||||
ParserMode.QUICK_PARSE,
|
ParserMode.QUICK_PARSE,
|
||||||
ParserLanguage.CPP,
|
ParserLanguage.CPP,
|
||||||
callback,new NullLogService());
|
callback,new NullLogService(), null);
|
||||||
} catch (ParserFactoryError e1) {
|
} catch (ParserFactoryError e1) {
|
||||||
}
|
}
|
||||||
IQuickParseCallback callback = ParserFactory.createQuickParseCallback();
|
IQuickParseCallback callback = ParserFactory.createQuickParseCallback();
|
||||||
|
|
|
@ -446,7 +446,7 @@ public class MatchLocator implements ISourceElementRequestor, ICSearchConstants
|
||||||
IParser parser = null;
|
IParser parser = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
IScanner scanner = ParserFactory.createScanner( reader, realPath.toOSString(), scanInfo, ParserMode.COMPLETE_PARSE, language, this, ParserUtil.getScannerLogService() );
|
IScanner scanner = ParserFactory.createScanner( reader, realPath.toOSString(), scanInfo, ParserMode.COMPLETE_PARSE, language, this, ParserUtil.getScannerLogService(), null );
|
||||||
parser = ParserFactory.createParser( scanner, this, ParserMode.COMPLETE_PARSE, language, ParserUtil.getParserLogService() );
|
parser = ParserFactory.createParser( scanner, this, ParserMode.COMPLETE_PARSE, language, ParserUtil.getParserLogService() );
|
||||||
}
|
}
|
||||||
catch( ParserFactoryError pfe )
|
catch( ParserFactoryError pfe )
|
||||||
|
@ -605,8 +605,8 @@ public class MatchLocator implements ISourceElementRequestor, ICSearchConstants
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#createReader(java.lang.String)
|
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#createReader(java.lang.String)
|
||||||
*/
|
*/
|
||||||
public Reader createReader(String finalPath) {
|
public Reader createReader(String finalPath, Iterator workingCopies) {
|
||||||
return ParserUtil.createReader(finalPath);
|
return ParserUtil.createReader(finalPath,workingCopies);
|
||||||
}
|
}
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#parserTimeout()
|
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#parserTimeout()
|
||||||
|
|
|
@ -12,9 +12,12 @@ package org.eclipse.cdt.core.parser;
|
||||||
|
|
||||||
import java.io.BufferedInputStream;
|
import java.io.BufferedInputStream;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
|
import java.io.CharArrayReader;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.model.IWorkingCopy;
|
||||||
import org.eclipse.cdt.internal.core.model.IDebugLogConstants;
|
import org.eclipse.cdt.internal.core.model.IDebugLogConstants;
|
||||||
import org.eclipse.cdt.internal.core.parser.InternalParserUtil;
|
import org.eclipse.cdt.internal.core.parser.InternalParserUtil;
|
||||||
import org.eclipse.cdt.internal.core.parser.ParserLogService;
|
import org.eclipse.cdt.internal.core.parser.ParserLogService;
|
||||||
|
@ -48,7 +51,7 @@ public class ParserUtil
|
||||||
return scannerLogService;
|
return scannerLogService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Reader createReader( String finalPath )
|
public static Reader createReader( String finalPath, Iterator workingCopies )
|
||||||
{
|
{
|
||||||
// check to see if the file which this path points to points to an
|
// check to see if the file which this path points to points to an
|
||||||
// IResource in the workspace
|
// IResource in the workspace
|
||||||
|
@ -60,11 +63,18 @@ public class ParserUtil
|
||||||
if( workspace.getRoot().getLocation().isPrefixOf( path ) )
|
if( workspace.getRoot().getLocation().isPrefixOf( path ) )
|
||||||
path = path.removeFirstSegments(workspace.getRoot().getLocation().segmentCount() );
|
path = path.removeFirstSegments(workspace.getRoot().getLocation().segmentCount() );
|
||||||
|
|
||||||
IResource result = workspace.getRoot().findMember(path);
|
IResource resultingResource = workspace.getRoot().findMember(path);
|
||||||
|
|
||||||
if( result != null && result.getType() == IResource.FILE )
|
if( resultingResource != null && resultingResource.getType() == IResource.FILE )
|
||||||
{
|
{
|
||||||
BufferedInputStream bufferedStream = new BufferedInputStream( ((IFile) result).getContents() );
|
// this is the file for sure
|
||||||
|
// check the working copy
|
||||||
|
if( workingCopies.hasNext() )
|
||||||
|
{
|
||||||
|
Reader r = findWorkingCopy( resultingResource, workingCopies );
|
||||||
|
if( r != null ) return r;
|
||||||
|
}
|
||||||
|
BufferedInputStream bufferedStream = new BufferedInputStream( ((IFile) resultingResource).getContents() );
|
||||||
InputStreamReader inputReader = new InputStreamReader( bufferedStream );
|
InputStreamReader inputReader = new InputStreamReader( bufferedStream );
|
||||||
return new BufferedReader( inputReader );
|
return new BufferedReader( inputReader );
|
||||||
}
|
}
|
||||||
|
@ -74,4 +84,31 @@ public class ParserUtil
|
||||||
}
|
}
|
||||||
return InternalParserUtil.createFileReader(finalPath);
|
return InternalParserUtil.createFileReader(finalPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param resultingResource
|
||||||
|
* @param workingCopies
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
protected static Reader findWorkingCopy(IResource resultingResource, Iterator workingCopies) {
|
||||||
|
if( parserLogService.isTracing() )
|
||||||
|
parserLogService.traceLog( "Attempting to find the working copy for " + resultingResource.getName() );
|
||||||
|
while( workingCopies.hasNext() )
|
||||||
|
{
|
||||||
|
Object next = workingCopies.next();
|
||||||
|
if( !( next instanceof IWorkingCopy)) continue;
|
||||||
|
IWorkingCopy copy = (IWorkingCopy) next;
|
||||||
|
if( copy.getResource().equals(resultingResource ))
|
||||||
|
{
|
||||||
|
CharArrayReader arrayReader = new CharArrayReader( copy.getContents() );
|
||||||
|
if( parserLogService.isTracing() )
|
||||||
|
parserLogService.traceLog( "Working copy found!!" );
|
||||||
|
return new BufferedReader( arrayReader );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if( parserLogService.isTracing() )
|
||||||
|
parserLogService.traceLog( "Working copy not found." );
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
2004-04-11 John Camelon
|
||||||
|
Updated CompletionEngine to use shared working copies when parsing include files.
|
||||||
|
Updated clients for ISourceElementRequestor.createReader() updates.
|
||||||
|
|
||||||
2004-04-07 John Camelon
|
2004-04-07 John Camelon
|
||||||
Updated CompletionEngine to use the extended IASTCompletionNode interface for FUNCTION_REFERENCE.
|
Updated CompletionEngine to use the extended IASTCompletionNode interface for FUNCTION_REFERENCE.
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,7 @@ public class CStructureCreator implements IStructureCreator {
|
||||||
//are bugs while parsing C files, we might want to create a separate Structure
|
//are bugs while parsing C files, we might want to create a separate Structure
|
||||||
//compare for c files, but we'll never be completely right about .h files
|
//compare for c files, but we'll never be completely right about .h files
|
||||||
IScanner scanner =
|
IScanner scanner =
|
||||||
ParserFactory.createScanner(new StringReader(s), "code", new ScannerInfo(), ParserMode.QUICK_PARSE, ParserLanguage.CPP, builder, new NullLogService()); //$NON-NLS-1$
|
ParserFactory.createScanner(new StringReader(s), "code", new ScannerInfo(), ParserMode.QUICK_PARSE, ParserLanguage.CPP, builder, new NullLogService(), null); //$NON-NLS-1$
|
||||||
IParser parser = ParserFactory.createParser(scanner, builder, ParserMode.QUICK_PARSE, ParserLanguage.CPP, ParserUtil.getParserLogService() );
|
IParser parser = ParserFactory.createParser(scanner, builder, ParserMode.QUICK_PARSE, ParserLanguage.CPP, ParserUtil.getParserLogService() );
|
||||||
parser.parse();
|
parser.parse();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
package org.eclipse.cdt.internal.ui.compare;
|
package org.eclipse.cdt.internal.ui.compare;
|
||||||
|
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.parser.DefaultProblemHandler;
|
import org.eclipse.cdt.core.parser.DefaultProblemHandler;
|
||||||
import org.eclipse.cdt.core.parser.IProblem;
|
import org.eclipse.cdt.core.parser.IProblem;
|
||||||
|
@ -338,8 +339,8 @@ public class SourceElementRequestorAdapter implements ISourceElementRequestor {
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#createReader(java.lang.String)
|
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#createReader(java.lang.String)
|
||||||
*/
|
*/
|
||||||
public Reader createReader(String finalPath) {
|
public Reader createReader(String finalPath, Iterator workingCopies) {
|
||||||
return ParserUtil.createReader(finalPath);
|
return ParserUtil.createReader(finalPath, workingCopies );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
|
|
@ -103,7 +103,7 @@ public abstract class FindAction extends Action {
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
parser = ParserFactory.createParser(
|
parser = ParserFactory.createParser(
|
||||||
ParserFactory.createScanner( reader, resourceFile.getLocation().toOSString(), scanInfo, ParserMode.SELECTION_PARSE, language, new NullSourceElementRequestor(), ParserUtil.getScannerLogService() ),
|
ParserFactory.createScanner( reader, resourceFile.getLocation().toOSString(), scanInfo, ParserMode.SELECTION_PARSE, language, new NullSourceElementRequestor(), ParserUtil.getScannerLogService(), null ),
|
||||||
new NullSourceElementRequestor(), ParserMode.SELECTION_PARSE, language, ParserUtil.getParserLogService() );
|
new NullSourceElementRequestor(), ParserMode.SELECTION_PARSE, language, ParserUtil.getParserLogService() );
|
||||||
|
|
||||||
} catch( ParserFactoryError pfe ){}
|
} catch( ParserFactoryError pfe ){}
|
||||||
|
|
|
@ -418,7 +418,7 @@ public class OpenDeclarationsAction extends Action implements IUpdate {
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
parser = ParserFactory.createParser(
|
parser = ParserFactory.createParser(
|
||||||
ParserFactory.createScanner( reader, resourceFile.getLocation().toOSString(), scanInfo, ParserMode.SELECTION_PARSE, language, new NullSourceElementRequestor(), ParserUtil.getScannerLogService() ),
|
ParserFactory.createScanner( reader, resourceFile.getLocation().toOSString(), scanInfo, ParserMode.SELECTION_PARSE, language, new NullSourceElementRequestor(), ParserUtil.getScannerLogService(), null ),
|
||||||
new NullSourceElementRequestor(), ParserMode.SELECTION_PARSE, language, ParserUtil.getParserLogService() );
|
new NullSourceElementRequestor(), ParserMode.SELECTION_PARSE, language, ParserUtil.getParserLogService() );
|
||||||
|
|
||||||
} catch( ParserFactoryError pfe ){}
|
} catch( ParserFactoryError pfe ){}
|
||||||
|
|
|
@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.ui.text.contentassist;
|
||||||
import java.io.CharArrayReader;
|
import java.io.CharArrayReader;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -179,7 +180,7 @@ public class CompletionEngine implements RelevanceConstants {
|
||||||
IScanner scanner = null;
|
IScanner scanner = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
scanner = ParserFactory.createScanner( reader, realPath.toOSString(), scanInfo, ParserMode.COMPLETION_PARSE, language, elementRequestor, ParserUtil.getScannerLogService() );
|
scanner = ParserFactory.createScanner( reader, realPath.toOSString(), scanInfo, ParserMode.COMPLETION_PARSE, language, elementRequestor, ParserUtil.getScannerLogService(), Arrays.asList(CUIPlugin.getSharedWorkingCopies()) );
|
||||||
parser = ParserFactory.createParser( scanner, elementRequestor, ParserMode.COMPLETION_PARSE, language, ParserUtil.getParserLogService() );
|
parser = ParserFactory.createParser( scanner, elementRequestor, ParserMode.COMPLETION_PARSE, language, ParserUtil.getParserLogService() );
|
||||||
}
|
}
|
||||||
catch( ParserFactoryError pfe )
|
catch( ParserFactoryError pfe )
|
||||||
|
|
|
@ -10,10 +10,14 @@
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
package org.eclipse.cdt.internal.ui.text.contentassist;
|
package org.eclipse.cdt.internal.ui.text.contentassist;
|
||||||
|
|
||||||
|
import java.io.Reader;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.parser.NullSourceElementRequestor;
|
import org.eclipse.cdt.core.parser.NullSourceElementRequestor;
|
||||||
|
import org.eclipse.cdt.core.parser.ParserUtil;
|
||||||
|
import org.eclipse.cdt.utils.TimeOut;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||||
import org.eclipse.cdt.utils.TimeOut;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -24,6 +28,14 @@ public class ContentAssistElementRequestor extends NullSourceElementRequestor im
|
||||||
private static TimeOut timeoutThread = new TimeOut();
|
private static TimeOut timeoutThread = new TimeOut();
|
||||||
private IProgressMonitor pm = new NullProgressMonitor();
|
private IProgressMonitor pm = new NullProgressMonitor();
|
||||||
|
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#createReader(java.lang.String)
|
||||||
|
*/
|
||||||
|
public Reader createReader(String finalPath, Iterator workingCopies) {
|
||||||
|
return ParserUtil.createReader(finalPath, workingCopies );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Reference in a new issue