mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Updated Parser.translationUnit() to catch all Throwable rather than Exception
This commit is contained in:
parent
a718c3de62
commit
c3338eda94
6 changed files with 50 additions and 23 deletions
|
@ -11,7 +11,6 @@
|
|||
package org.eclipse.cdt.internal.core.parser;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.core.parser.BacktrackException;
|
||||
|
@ -210,9 +209,10 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
break;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
catch (Throwable e)
|
||||
{
|
||||
logException( "translationUnit", e ); //$NON-NLS-1$
|
||||
if( e instanceof Exception )
|
||||
logException( "translationUnit", (Exception) e ); //$NON-NLS-1$
|
||||
failParse();
|
||||
}
|
||||
}
|
||||
|
@ -1112,19 +1112,19 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
logException( "simpleDecl", e ); //$NON-NLS-1$
|
||||
throw backtrack;
|
||||
}
|
||||
Iterator i = l.iterator();
|
||||
|
||||
if (hasFunctionBody && l.size() != 1)
|
||||
{
|
||||
throw backtrack; //TODO Should be an IProblem
|
||||
}
|
||||
if (i.hasNext()) // no need to do this unless we have a declarator
|
||||
if (!l.isEmpty()) // no need to do this unless we have a declarator
|
||||
{
|
||||
if (!hasFunctionBody || fromCatchHandler)
|
||||
{
|
||||
IASTDeclaration declaration = null;
|
||||
while (i.hasNext())
|
||||
for( int i = 0; i < l.size(); ++i )
|
||||
{
|
||||
declaration = (IASTDeclaration)i.next();
|
||||
declaration = (IASTDeclaration)l.get(i);
|
||||
((IASTOffsetableElement)declaration).setEndingOffsetAndLineNumber(
|
||||
lastToken.getEndOffset(), lastToken.getLineNumber());
|
||||
declaration.acceptElement( requestor, astFactory.getReferenceManager() );
|
||||
|
@ -1134,7 +1134,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
|||
}
|
||||
return declaration;
|
||||
}
|
||||
IASTDeclaration declaration = (IASTDeclaration)i.next();
|
||||
IASTDeclaration declaration = (IASTDeclaration)l.get(0);
|
||||
endDeclaration( declaration );
|
||||
declaration.enterScope( requestor, astFactory.getReferenceManager() );
|
||||
if( sdw.getTypeSpecifier() instanceof IASTSimpleTypeSpecifier )
|
||||
|
|
|
@ -41,6 +41,8 @@ ScannerProblemFactory.error.scanner.badHexFormat=Invalid hexidecimal format enco
|
|||
ScannerProblemFactory.error.scanner.unexpectedEOF=Unexpected End Of File encountered
|
||||
ScannerProblemFactory.error.scanner.badCharacter=Bad character sequence encountered : {0}
|
||||
|
||||
ParserProblemFactory.error.syntax.syntaxError=Syntax error encountered
|
||||
|
||||
ASTProblemFactory.error.semantic.uniqueNamePredefined=Attempt to introduce unique symbol failed : {0}
|
||||
ASTProblemFactory.error.semantic.nameNotFound=Attempt to use symbol failed : {0}
|
||||
ASTProblemFactory.error.semantic.nameNotProvided=Name not provided.
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
***********************************************************************/
|
||||
package org.eclipse.cdt.internal.core.parser;
|
||||
|
||||
import org.eclipse.cdt.core.parser.IProblem;
|
||||
import org.eclipse.cdt.internal.core.parser.problem.BaseProblemFactory;
|
||||
import org.eclipse.cdt.internal.core.parser.problem.IProblemFactory;
|
||||
|
||||
|
@ -21,6 +22,37 @@ public class ParserProblemFactory extends BaseProblemFactory
|
|||
implements
|
||||
IProblemFactory {
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.internal.core.parser.IProblemFactory#createProblem(int, int, int, int, char[], java.lang.String, boolean, boolean)
|
||||
*/
|
||||
public IProblem createProblem(
|
||||
int id,
|
||||
int start,
|
||||
int end,
|
||||
int line,
|
||||
char[] file,
|
||||
String arg,
|
||||
boolean warn,
|
||||
boolean error)
|
||||
{
|
||||
if( checkBitmask( id, IProblem.INTERNAL_RELATED ) )
|
||||
return createInternalProblem( id, start, end, line, file, arg, warn, error );
|
||||
|
||||
if ( checkBitmask( id, IProblem.SYNTAX_RELATED ) )
|
||||
return super.createProblem(
|
||||
id,
|
||||
start,
|
||||
end,
|
||||
line,
|
||||
file,
|
||||
arg,
|
||||
warn,
|
||||
error);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.internal.core.parser.problem.IProblemFactory#getRequiredAttributesForId(int)
|
||||
*/
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
package org.eclipse.cdt.internal.core.parser.ast.complete;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -45,9 +46,12 @@ public class ASTEnumerationSpecifier
|
|||
}
|
||||
|
||||
|
||||
private List enumerators = new ArrayList();
|
||||
private List enumerators = Collections.EMPTY_LIST;
|
||||
private static final int ENUMERATOR_LIST_SIZE = 4;
|
||||
public void addEnumerator(IASTEnumerator enumerator)
|
||||
{
|
||||
if( enumerators == Collections.EMPTY_LIST )
|
||||
enumerators = new ArrayList( ENUMERATOR_LIST_SIZE );
|
||||
enumerators.add(enumerator);
|
||||
}
|
||||
|
||||
|
|
|
@ -41,19 +41,5 @@ public abstract class BaseProblemFactory {
|
|||
* @param file
|
||||
* @return
|
||||
*/
|
||||
// private String createInternalMessage(int id, String arg, int line, char[] file)
|
||||
// {
|
||||
// if( checkBitmask( id, IProblem.INTERNAL_RELATED ))
|
||||
// {
|
||||
// StringBuffer buffer = new StringBuffer();
|
||||
//
|
||||
// switch( id )
|
||||
// {
|
||||
// }
|
||||
//
|
||||
// return buffer.toString();
|
||||
// }
|
||||
// return null;
|
||||
// }
|
||||
|
||||
}
|
||||
|
|
|
@ -196,6 +196,9 @@ public class Problem implements IProblem {
|
|||
errorMessages.put(
|
||||
new Integer(IProblem.SCANNER_BAD_CHARACTER),
|
||||
ParserMessages.getString("ScannerProblemFactory.error.scanner.badCharacter")); //$NON-NLS-1$
|
||||
errorMessages.put(
|
||||
new Integer( IProblem.SYNTAX_ERROR ),
|
||||
ParserMessages.getString( "ParserProblemFactory.error.syntax.syntaxError")); //$NON-NLS-1$
|
||||
}
|
||||
protected final static String PROBLEM_PATTERN = "BaseProblemFactory.problemPattern"; //$NON-NLS-1$
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue