From d0c897c1e9a0631a923e9354f883bcc89ea1bc3f Mon Sep 17 00:00:00 2001 From: John Camelon Date: Thu, 3 Jun 2004 00:17:30 +0000 Subject: [PATCH] Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=61603 --- .../org/eclipse/cdt/core/parser/IProblem.java | 1 + .../cdt/internal/core/parser/Parser.java | 34 ++++++++++++++++++- .../core/parser/ParserProblemFactory.java | 31 +++++++++++++++++ 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserProblemFactory.java diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IProblem.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IProblem.java index 084e4afcc04..7d7381dc454 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IProblem.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IProblem.java @@ -356,6 +356,7 @@ public interface IProblem /* * Parser Syntactic Problems */ + public final static int SYNTAX_ERROR = SYNTAX_RELATED | 0x001; /* * Parser Semantic Problems 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 7be052930b0..510841e956c 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 @@ -18,6 +18,7 @@ import org.eclipse.cdt.core.parser.BacktrackException; import org.eclipse.cdt.core.parser.EndOfFileException; import org.eclipse.cdt.core.parser.IParser; import org.eclipse.cdt.core.parser.IParserLogService; +import org.eclipse.cdt.core.parser.IProblem; import org.eclipse.cdt.core.parser.IScanner; import org.eclipse.cdt.core.parser.ISourceElementRequestor; import org.eclipse.cdt.core.parser.IToken; @@ -59,6 +60,7 @@ import org.eclipse.cdt.core.parser.ast.IASTUsingDirective; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType; import org.eclipse.cdt.core.parser.ast.IASTCompletionNode.CompletionKind; import org.eclipse.cdt.core.parser.extension.IParserExtension; +import org.eclipse.cdt.internal.core.parser.problem.IProblemFactory; import org.eclipse.cdt.internal.core.parser.token.KeywordSetKey; import org.eclipse.cdt.internal.core.parser.token.TokenFactory; @@ -74,7 +76,7 @@ public abstract class Parser extends ExpressionParser implements IParser { private static final int DEFAULT_DESIGNATOR_LIST_SIZE = 4; protected ISourceElementRequestor requestor = null; - + private IProblemFactory problemFactory = new ParserProblemFactory(); /** * This is the standard cosntructor that we expect the Parser to be instantiated * with. @@ -90,6 +92,36 @@ public abstract class Parser extends ExpressionParser implements IParser requestor = callback; } + + + /* (non-Javadoc) + * @see org.eclipse.cdt.internal.core.parser.ExpressionParser#failParse() + */ + protected void failParse() { + IToken referenceToken = null; + if( lastToken != null ) + referenceToken = lastToken; + else + try + { + referenceToken = LA(1); + } + catch( EndOfFileException eof ) + { + return; + } + IProblem problem = problemFactory.createProblem( + IProblem.SYNTAX_ERROR, + referenceToken.getOffset(), + referenceToken.getOffset(), + referenceToken.getLineNumber(), + scanner.getCurrentFilename(), + EMPTY_STRING, + false, + true ); + requestor.acceptProblem( problem ); + super.failParse(); + } // counter that keeps track of the number of times Parser.parse() is called private static int parseCount = 0; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserProblemFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserProblemFactory.java new file mode 100644 index 00000000000..59107c7de2a --- /dev/null +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserProblemFactory.java @@ -0,0 +1,31 @@ +/********************************************************************** + * Copyright (c) 2002-2004 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; + +import org.eclipse.cdt.internal.core.parser.problem.BaseProblemFactory; +import org.eclipse.cdt.internal.core.parser.problem.IProblemFactory; + +/** + * @author jcamelon + * + */ +public class ParserProblemFactory extends BaseProblemFactory + implements + IProblemFactory { + + /* (non-Javadoc) + * @see org.eclipse.cdt.internal.core.parser.problem.IProblemFactory#getRequiredAttributesForId(int) + */ + public String getRequiredAttributesForId(int id) { + return ""; //$NON-NLS-1$ + } + +}