Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Niefer2004-07-09 15:06:59 +0000
committerAndrew Niefer2004-07-09 15:06:59 +0000
commit226defa14a6967e9fb25044745732169a2192074 (patch)
tree07d711c8cb4bde5f55a1e8850ad46dec13a95ebe
parent1dfc3821c45a4343e81ac45f197d48bb3d5a9056 (diff)
downloadorg.eclipse.cdt-226defa14a6967e9fb25044745732169a2192074.tar.gz
org.eclipse.cdt-226defa14a6967e9fb25044745732169a2192074.tar.xz
org.eclipse.cdt-226defa14a6967e9fb25044745732169a2192074.zip
bug 69296 - remove ILineOffsetReconciler
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java37
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/TortureTest.java41
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ILineOffsetReconciler.java21
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParser.java1
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactory.java7
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionParser.java9
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java3
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/LineOffsetReconciler.java106
8 files changed, 41 insertions, 184 deletions
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java
index ea4991b0c0c..a91ca6e2242 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java
@@ -14,14 +14,12 @@ package org.eclipse.cdt.core.parser.tests;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
-import java.io.InputStreamReader;
import java.util.NoSuchElementException;
import java.util.StringTokenizer;
import junit.framework.AssertionFailedError;
import junit.framework.Test;
-import org.eclipse.cdt.core.parser.ILineOffsetReconciler;
import org.eclipse.cdt.core.parser.IParser;
import org.eclipse.cdt.core.parser.ParserFactory;
import org.eclipse.cdt.core.parser.ParserLanguage;
@@ -50,18 +48,14 @@ public class AutomatedTest extends AutomatedFramework {
File file = null;
IParser parser = null;
- ILineOffsetReconciler mapping = null;
try{
file = (File)fileList.removeFirst();
- FileInputStream stream = new FileInputStream( file );
String filePath = file.getCanonicalPath();
ParserLanguage language = ((String)natures.get( filePath )).equalsIgnoreCase("cpp") ? ParserLanguage.CPP : ParserLanguage.C; //$NON-NLS-1$
parser = ParserFactory.createParser( ParserFactory.createScanner(filePath, new ScannerInfo(), ParserMode.QUICK_PARSE, language, nullCallback, null, null ), nullCallback, ParserMode.QUICK_PARSE, language, null);
- mapping = ParserFactory.createLineOffsetReconciler( new InputStreamReader( stream ) );
-
assertTrue( parser.parse() );
}
catch( Throwable e )
@@ -69,10 +63,10 @@ public class AutomatedTest extends AutomatedFramework {
String output = null;
if( e instanceof AssertionFailedError ){
output = file.getCanonicalPath() + ": Parse failed on line "; //$NON-NLS-1$
- output += mapping.getLineNumberForOffset(parser.getLastErrorOffset()) + "\n"; //$NON-NLS-1$
+ output += parser.getLastErrorLine() + "\n"; //$NON-NLS-1$
} else {
output = file.getCanonicalPath() + ": " + e.getClass().toString(); //$NON-NLS-1$
- output += " on line " + mapping.getLineNumberForOffset(parser.getLastErrorOffset()) + "\n"; //$NON-NLS-1$ //$NON-NLS-2$
+ output += " on line " + parser.getLastErrorLine() + "\n"; //$NON-NLS-1$ //$NON-NLS-2$
}
if( report != null ){
report.write( output.getBytes() );
@@ -112,22 +106,21 @@ public class AutomatedTest extends AutomatedFramework {
String sourceInfo = properties.getProperty( "source", "" ); //$NON-NLS-1$ //$NON-NLS-2$
if( sourceInfo.equals("") ) //$NON-NLS-1$
throw new FileNotFoundException();
- else{
- StringTokenizer tokenizer = new StringTokenizer( sourceInfo, "," ); //$NON-NLS-1$
- String str = null, val = null;
- try{
- while( tokenizer.hasMoreTokens() ){
- str = tokenizer.nextToken().trim();
- val = tokenizer.nextToken().trim();
-
- testSources.put( str, val );
- }
- } catch ( NoSuchElementException e ){
- //only way to get here is to have a missing val, assume cpp for that str
- testSources.put( str, "cpp" ); //$NON-NLS-1$
+
+ StringTokenizer tokenizer = new StringTokenizer( sourceInfo, "," ); //$NON-NLS-1$
+ String str = null, val = null;
+ try{
+ while( tokenizer.hasMoreTokens() ){
+ str = tokenizer.nextToken().trim();
+ val = tokenizer.nextToken().trim();
+
+ testSources.put( str, val );
}
-
+ } catch ( NoSuchElementException e ){
+ //only way to get here is to have a missing val, assume cpp for that str
+ testSources.put( str, "cpp" ); //$NON-NLS-1$
}
+
} catch ( FileNotFoundException e ){
testSources.put( resourcePath + "/defaultCpp", "cpp" ); //$NON-NLS-1$ //$NON-NLS-2$
testSources.put( resourcePath + "/defaultC", "c" ); //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/TortureTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/TortureTest.java
index b18a2e04388..608c191a904 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/TortureTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/TortureTest.java
@@ -14,7 +14,6 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
-import java.io.StringReader;
import java.io.StringWriter;
import java.util.NoSuchElementException;
import java.util.StringTokenizer;
@@ -23,7 +22,6 @@ import junit.framework.AssertionFailedError;
import junit.framework.Test;
import org.eclipse.cdt.core.parser.CodeReader;
-import org.eclipse.cdt.core.parser.ILineOffsetReconciler;
import org.eclipse.cdt.core.parser.IParser;
import org.eclipse.cdt.core.parser.NullLogService;
import org.eclipse.cdt.core.parser.ParserFactory;
@@ -75,21 +73,19 @@ public class TortureTest extends FractionalAutomatedTest {
if (sourceInfo.equals("")) //$NON-NLS-1$
throw new FileNotFoundException();
- else {
- StringTokenizer tokenizer = new StringTokenizer(sourceInfo, ","); //$NON-NLS-1$
- String str = null, val = null;
- try {
- while (tokenizer.hasMoreTokens()) {
- str = tokenizer.nextToken().trim();
- val = tokenizer.nextToken().trim();
-
- testSources.put(str, val);
- }
- } catch (NoSuchElementException e){
- //only way to get here is to have a missing val, assume cpp for that str
- testSources.put(str, "cpp"); //$NON-NLS-1$
+
+ StringTokenizer tokenizer = new StringTokenizer(sourceInfo, ","); //$NON-NLS-1$
+ String str = null, val = null;
+ try {
+ while (tokenizer.hasMoreTokens()) {
+ str = tokenizer.nextToken().trim();
+ val = tokenizer.nextToken().trim();
+
+ testSources.put(str, val);
}
-
+ } catch (NoSuchElementException e){
+ //only way to get here is to have a missing val, assume cpp for that str
+ testSources.put(str, "cpp"); //$NON-NLS-1$
}
} catch (FileNotFoundException e){
testSources.put(resourcePath, "cpp"); //$NON-NLS-1$
@@ -106,14 +102,12 @@ public class TortureTest extends FractionalAutomatedTest {
}
- static protected void reportException (Throwable e, String file, IParser parser, ILineOffsetReconciler mapping){
+ static protected void reportException (Throwable e, String file, IParser parser){
String output = null;
int lineNumber = -1;
- try {
- lineNumber = mapping.getLineNumberForOffset(parser.getLastErrorOffset());
- } catch (Exception ex) {}
-
+ lineNumber = parser.getLastErrorLine();
+
if (e instanceof AssertionFailedError) {
output = file + ": Parse failed on line "; //$NON-NLS-1$
output += lineNumber + "\n"; //$NON-NLS-1$
@@ -255,7 +249,7 @@ public class TortureTest extends FractionalAutomatedTest {
thread.stop();
reportHang(testCode, filePath);
} else if (thread.result != null) {
- reportException(thread.result, filePath, thread.parser, thread.mapping);
+ reportException(thread.result, filePath, thread.parser);
}
} else {
// gcc probably didn't expect this test to pass.
@@ -269,7 +263,6 @@ public class TortureTest extends FractionalAutomatedTest {
static class ParseThread extends Thread {
- public ILineOffsetReconciler mapping = null;
public String code;
public boolean cppNature;
public String file;
@@ -284,8 +277,6 @@ public class TortureTest extends FractionalAutomatedTest {
parser = ParserFactory.createParser(
ParserFactory.createScanner( new CodeReader( code.toCharArray() ), new ScannerInfo(), parserMode, language, nullCallback, new NullLogService(), null ), nullCallback, parserMode, language, null);
- mapping = ParserFactory.createLineOffsetReconciler( new StringReader( code ) );
-
assertTrue(parser.parse());
}
catch( Throwable e )
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ILineOffsetReconciler.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ILineOffsetReconciler.java
deleted file mode 100644
index dece7606121..00000000000
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ILineOffsetReconciler.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002,2003 Rational Software Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
-***********************************************************************/
-package org.eclipse.cdt.core.parser;
-
-/**
- * @author jcamelon
- *
- */
-public interface ILineOffsetReconciler
-{
- public int getLineNumberForOffset( int offset );
- public IOffsetDuple getOffsetRangeForLineNumber( int LineNumber );
-}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParser.java
index 53593c5ccfc..ae86f41c09a 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParser.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParser.java
@@ -58,5 +58,6 @@ public interface IParser {
*/
public int getLastErrorOffset();
+ public int getLastErrorLine();
} \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactory.java
index be6a7fd1bfa..32a6c316b7c 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactory.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactory.java
@@ -11,7 +11,6 @@
package org.eclipse.cdt.core.parser;
import java.io.IOException;
-import java.io.Reader;
import java.util.List;
import java.util.Set;
@@ -30,7 +29,6 @@ import org.eclipse.cdt.internal.core.parser.StructuralParser;
import org.eclipse.cdt.internal.core.parser.ast.complete.CompleteParseASTFactory;
import org.eclipse.cdt.internal.core.parser.ast.expression.ExpressionParseASTFactory;
import org.eclipse.cdt.internal.core.parser.ast.quick.QuickParseASTFactory;
-import org.eclipse.cdt.internal.core.parser.scanner.LineOffsetReconciler;
import org.eclipse.cdt.internal.core.parser.scanner.Scanner;
import org.eclipse.cdt.internal.core.parser.token.KeywordSets;
@@ -111,11 +109,6 @@ public class ParserFactory {
{
return createScanner(new CodeReader(fileName), config, mode, language, requestor, log, workingCopies);
}
-
- public static ILineOffsetReconciler createLineOffsetReconciler( Reader input )
- {
- return new LineOffsetReconciler( input );
- }
public static IQuickParseCallback createQuickParseCallback()
{
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionParser.java
index 418c9f2fafa..cf8f766983b 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionParser.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionParser.java
@@ -51,9 +51,10 @@ import org.eclipse.cdt.internal.core.parser.util.TraceUtil;
public class ExpressionParser implements IExpressionParser, IParserData {
protected static final String EMPTY_STRING = ""; //$NON-NLS-1$
- private static int FIRST_ERROR_OFFSET_UNSET = -1;
+ private static int FIRST_ERROR_UNSET = -1;
protected boolean parsePassed = true;
- protected int firstErrorOffset = FIRST_ERROR_OFFSET_UNSET;
+ protected int firstErrorOffset = FIRST_ERROR_UNSET;
+ protected int firstErrorLine = FIRST_ERROR_UNSET;
private BacktrackException backtrack = new BacktrackException();
private int backtrackCount = 0;
@@ -223,8 +224,10 @@ public class ExpressionParser implements IExpressionParser, IParserData {
*/
protected void failParse() {
try {
- if (firstErrorOffset == FIRST_ERROR_OFFSET_UNSET)
+ if (firstErrorOffset == FIRST_ERROR_UNSET){
firstErrorOffset = LA(1).getOffset();
+ firstErrorLine = LA(1).getLineNumber();
+ }
} catch (EndOfFileException eof) {
// do nothing
} finally {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java
index 3fccc547f0d..50a8cbd009c 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java
@@ -3291,6 +3291,9 @@ public abstract class Parser extends ExpressionParser implements IParser
public int getLastErrorOffset() {
return firstErrorOffset;
}
+ public int getLastErrorLine() {
+ return firstErrorLine;
+ }
protected void setCompletionToken(IToken token) {
// do nothing!
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/LineOffsetReconciler.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/LineOffsetReconciler.java
deleted file mode 100644
index 61481abced7..00000000000
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/LineOffsetReconciler.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002,2003 Rational Software Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
-***********************************************************************/
-package org.eclipse.cdt.internal.core.parser.scanner;
-
-import java.io.IOException;
-import java.io.Reader;
-
-import org.eclipse.cdt.core.parser.ILineOffsetReconciler;
-import org.eclipse.cdt.core.parser.IOffsetDuple;
-import org.eclipse.cdt.internal.core.parser.ParserMessages;
-import org.eclipse.cdt.internal.core.parser.token.OffsetDuple;
-
-/**
- * @author jcamelon
- *
- */
-public class LineOffsetReconciler implements ILineOffsetReconciler
-{
- private Reader ourReader;
- int currentOffset = 0;
- /**
- * @param input
- */
- public LineOffsetReconciler(Reader input)
- {
- ourReader = input;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.ILineOffsetReconciler#getLineNumberForOffset(int)
- */
- public int getLineNumberForOffset(int offset)
- {
- if( offset < currentOffset )
- resetReader();
- int lineNumber = 1;
- for( int i = currentOffset; i < offset; ++i )
- {
- int c = getChar();
- if( c == -1 )
- return -1;
- if( c == '\n' )
- ++lineNumber;
- }
- return lineNumber;
- }
-
- private int getChar()
- {
- int c;
- try
- {
- c = ourReader.read();
- ++currentOffset;
- }
- catch (IOException e)
- {
- return -1;
- }
- return c;
- }
- private void resetReader()
- {
- try
- {
- ourReader.reset();
- currentOffset = 0;
- }
- catch (IOException e)
- {
- throw new Error( ParserMessages.getString("LineOffsetReconciler.error.couldNotResetReader") ); //$NON-NLS-1$
- }
- }
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.ILineOffsetReconciler#getOffsetRangeForLineNumber(int)
- */
- public IOffsetDuple getOffsetRangeForLineNumber(int LineNumber)
- {
- int lineNumber = 1;
- int floor= -1, ceiling = -1;
- int offset = 0;
- while( lineNumber != LineNumber )
- {
- int c = getChar();
- ++offset;
- if( c == '\n' ) ++lineNumber;
- }
- floor = offset;
- while( lineNumber == LineNumber )
- {
- int c = getChar();
- ++offset;
- if( c == '\n' ) ++lineNumber;
- }
- ceiling = offset;
- return new OffsetDuple( floor, ceiling );
- }
-}

Back to the top