mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
This commit is contained in:
parent
15e615de07
commit
a549ff4f27
2 changed files with 54 additions and 37 deletions
|
@ -1914,4 +1914,9 @@ public class CompleteParseASTTest extends CompleteParseBaseTest
|
||||||
{
|
{
|
||||||
parse( "#define DEF1(A1) A1\n#define DEF2 DEF1(DEF2)\nDEF2;", false ); //$NON-NLS-1$
|
parse( "#define DEF1(A1) A1\n#define DEF2 DEF1(DEF2)\nDEF2;", false ); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testBug65569() throws Exception
|
||||||
|
{
|
||||||
|
parse( "class Sample;\nstruct Sample { /* ... */ };" ); //$NON-NLS-1$
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -356,7 +356,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( throwOnError )
|
if ( throwOnError )
|
||||||
handleProblem( IProblem.SEMANTIC_NAME_NOT_FOUND, image, -1, -1, name.getLineNumber() );
|
handleProblem( IProblem.SEMANTIC_NAME_NOT_FOUND, image, -1, -1, name.getLineNumber(), true );
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -497,7 +497,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
try {
|
try {
|
||||||
usingDirective = ((ASTScope)scope).getContainerSymbol().addUsingDirective( (IContainerSymbol)symbol );
|
usingDirective = ((ASTScope)scope).getContainerSymbol().addUsingDirective( (IContainerSymbol)symbol );
|
||||||
} catch (ParserSymbolTableException pste) {
|
} catch (ParserSymbolTableException pste) {
|
||||||
handleProblem( pste.createProblemID(), duple.toString(), startingOffset, endingOffset, startingLine );
|
handleProblem( pste.createProblemID(), duple.toString(), startingOffset, endingOffset, startingLine, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
ASTUsingDirective using = new ASTUsingDirective( scopeToSymbol(scope), usingDirective, startingOffset, startingLine, endingOffset, endingLine, references );
|
ASTUsingDirective using = new ASTUsingDirective( scopeToSymbol(scope), usingDirective, startingOffset, startingLine, endingOffset, endingLine, references );
|
||||||
|
@ -564,13 +564,13 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
}
|
}
|
||||||
catch (ParserSymbolTableException e)
|
catch (ParserSymbolTableException e)
|
||||||
{
|
{
|
||||||
handleProblem(e.createProblemID(), name.getLastToken().getImage(), startingOffset, endingOffset, startingLine );
|
handleProblem(e.createProblemID(), name.getLastToken().getImage(), startingOffset, endingOffset, startingLine, true );
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
try {
|
try {
|
||||||
endResult = scopeToSymbol(scope).addUsingDeclaration(name.getLastToken().getImage());
|
endResult = scopeToSymbol(scope).addUsingDeclaration(name.getLastToken().getImage());
|
||||||
} catch (ParserSymbolTableException e) {
|
} catch (ParserSymbolTableException e) {
|
||||||
handleProblem(e.createProblemID(), name.getLastToken().getImage(), startingOffset, endingOffset, startingLine );
|
handleProblem(e.createProblemID(), name.getLastToken().getImage(), startingOffset, endingOffset, startingLine, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( endResult != null )
|
if( endResult != null )
|
||||||
|
@ -618,14 +618,14 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
}
|
}
|
||||||
catch (ParserSymbolTableException e)
|
catch (ParserSymbolTableException e)
|
||||||
{
|
{
|
||||||
handleProblem( e.createProblemID(), identifier, nameOffset, nameEndOffset, nameLineNumber );
|
handleProblem( e.createProblemID(), identifier, nameOffset, nameEndOffset, nameLineNumber, true );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( namespaceSymbol != null )
|
if( namespaceSymbol != null )
|
||||||
{
|
{
|
||||||
if( namespaceSymbol.getType() != TypeInfo.t_namespace )
|
if( namespaceSymbol.getType() != TypeInfo.t_namespace )
|
||||||
handleProblem( IProblem.SEMANTIC_INVALID_OVERLOAD, identifier, nameOffset, nameEndOffset, nameLineNumber );
|
handleProblem( IProblem.SEMANTIC_INVALID_OVERLOAD, identifier, nameOffset, nameEndOffset, nameLineNumber, true );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -744,7 +744,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
else
|
else
|
||||||
currentScopeSymbol = (IContainerSymbol) temp;
|
currentScopeSymbol = (IContainerSymbol) temp;
|
||||||
if( currentScopeSymbol == null )
|
if( currentScopeSymbol == null )
|
||||||
handleProblem( IProblem.SEMANTIC_NAME_NOT_FOUND, containerSymbolName.toString(), containerSymbolName.getFirstToken().getOffset(), containerSymbolName.getLastToken().getEndOffset(), containerSymbolName.getLastToken().getLineNumber() );
|
handleProblem( IProblem.SEMANTIC_NAME_NOT_FOUND, containerSymbolName.toString(), containerSymbolName.getFirstToken().getOffset(), containerSymbolName.getLastToken().getEndOffset(), containerSymbolName.getLastToken().getLineNumber(), true );
|
||||||
|
|
||||||
nameToken = name.getLastSegment().getFirstToken();
|
nameToken = name.getLastSegment().getFirstToken();
|
||||||
} else {
|
} else {
|
||||||
|
@ -767,14 +767,24 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
}
|
}
|
||||||
catch (ParserSymbolTableException e)
|
catch (ParserSymbolTableException e)
|
||||||
{
|
{
|
||||||
handleProblem(IProblem.SEMANTIC_UNIQUE_NAME_PREDEFINED, name.toString(), nameOffset, nameEndOffset, nameLine);
|
handleProblem(IProblem.SEMANTIC_UNIQUE_NAME_PREDEFINED, name.toString(), nameOffset, nameEndOffset, nameLine, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( classSymbol != null && ! classSymbol.isForwardDeclaration() )
|
if( classSymbol != null && ! classSymbol.isForwardDeclaration() )
|
||||||
handleProblem( IProblem.SEMANTIC_UNIQUE_NAME_PREDEFINED, newSymbolName, nameOffset, nameEndOffset, nameLine );
|
handleProblem( IProblem.SEMANTIC_UNIQUE_NAME_PREDEFINED, newSymbolName, nameOffset, nameEndOffset, nameLine, true );
|
||||||
|
|
||||||
|
|
||||||
if( classSymbol != null && classSymbol.getType() != pstType )
|
if( classSymbol != null && classSymbol.getType() != pstType )
|
||||||
handleProblem( IProblem.SEMANTIC_INVALID_OVERLOAD, newSymbolName, nameOffset, nameEndOffset, nameLine );
|
{
|
||||||
|
boolean isError = true;
|
||||||
|
if( classSymbol.isType( TypeInfo.t_class, TypeInfo.t_union ) )
|
||||||
|
{
|
||||||
|
if ( ( pstType == TypeInfo.t_class || pstType == TypeInfo.t_struct || pstType == TypeInfo.t_union ) )
|
||||||
|
isError = false;
|
||||||
|
|
||||||
|
}
|
||||||
|
handleProblem( IProblem.SEMANTIC_INVALID_OVERLOAD, newSymbolName, nameOffset, nameEndOffset, nameLine, isError );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IDerivableContainerSymbol newSymbol = pst.newDerivableContainerSymbol( newSymbolName, pstType );
|
IDerivableContainerSymbol newSymbol = pst.newDerivableContainerSymbol( newSymbolName, pstType );
|
||||||
|
@ -832,16 +842,16 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
|
|
||||||
protected void handleProblem( int id, String attribute ) throws ASTSemanticException
|
protected void handleProblem( int id, String attribute ) throws ASTSemanticException
|
||||||
{
|
{
|
||||||
handleProblem( null, id, attribute, -1, -1, -1 ); //TODO make this right
|
handleProblem( null, id, attribute, -1, -1, -1, true ); //TODO make this right
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void handleProblem( IASTScope scope, int id, String attribute ) throws ASTSemanticException
|
protected void handleProblem( IASTScope scope, int id, String attribute ) throws ASTSemanticException
|
||||||
{
|
{
|
||||||
handleProblem( scope, id, attribute, -1, -1, -1 );
|
handleProblem( scope, id, attribute, -1, -1, -1, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void handleProblem( int id, String attribute, int startOffset, int endOffset, int lineNumber) throws ASTSemanticException {
|
protected void handleProblem( int id, String attribute, int startOffset, int endOffset, int lineNumber, boolean isError) throws ASTSemanticException {
|
||||||
handleProblem( null, id, attribute, startOffset, endOffset, lineNumber );
|
handleProblem( null, id, attribute, startOffset, endOffset, lineNumber, isError );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -850,19 +860,21 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
* @param startOffset
|
* @param startOffset
|
||||||
* @param endOffset
|
* @param endOffset
|
||||||
* @param lineNumber
|
* @param lineNumber
|
||||||
|
* @param isError TODO
|
||||||
* @throws ASTSemanticException
|
* @throws ASTSemanticException
|
||||||
*/
|
*/
|
||||||
protected void handleProblem( IASTScope scope, int id, String attribute, int startOffset, int endOffset, int lineNumber) throws ASTSemanticException {
|
protected void handleProblem( IASTScope scope, int id, String attribute, int startOffset, int endOffset, int lineNumber, boolean isError) throws ASTSemanticException {
|
||||||
IProblem p = problemFactory.createProblem( id,
|
IProblem p = problemFactory.createProblem( id,
|
||||||
startOffset, endOffset, lineNumber, fileProvider.getCurrentFilename(), attribute, false, true );
|
startOffset, endOffset, lineNumber, fileProvider.getCurrentFilename(), attribute, !isError, isError );
|
||||||
|
|
||||||
TraceUtil.outputTrace(logService, "CompleteParseASTFactory - IProblem : ", p, null, null, null ); //$NON-NLS-1$
|
TraceUtil.outputTrace(logService, "CompleteParseASTFactory - IProblem : ", p, null, null, null ); //$NON-NLS-1$
|
||||||
|
|
||||||
if( shouldThrowException( scope, id ) )
|
if( shouldThrowException( scope, id, !isError ) )
|
||||||
throw new ASTSemanticException(p);
|
throw new ASTSemanticException(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean shouldThrowException( IASTScope scope, int id ){
|
protected boolean shouldThrowException( IASTScope scope, int id, boolean isWarning ){
|
||||||
|
if( isWarning ) return false;
|
||||||
if( scope != null ){
|
if( scope != null ){
|
||||||
IContainerSymbol symbol = scopeToSymbol( scope );
|
IContainerSymbol symbol = scopeToSymbol( scope );
|
||||||
if( symbol.isTemplateMember() ){
|
if( symbol.isTemplateMember() ){
|
||||||
|
@ -1056,7 +1068,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
catch (ParserSymbolTableException e1)
|
catch (ParserSymbolTableException e1)
|
||||||
{
|
{
|
||||||
if( e1.reason == ParserSymbolTableException.r_InvalidOverload )
|
if( e1.reason == ParserSymbolTableException.r_InvalidOverload )
|
||||||
handleProblem( IProblem.SEMANTIC_INVALID_OVERLOAD, name, startingOffset, endingOffset, startingLine );
|
handleProblem( IProblem.SEMANTIC_INVALID_OVERLOAD, name, startingOffset, endingOffset, startingLine, true );
|
||||||
// assert false : e1;
|
// assert false : e1;
|
||||||
}
|
}
|
||||||
ASTEnumerator enumerator = new ASTEnumerator( enumeratorSymbol, enumeration, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endLine, initialValue );
|
ASTEnumerator enumerator = new ASTEnumerator( enumeratorSymbol, enumeration, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endLine, initialValue );
|
||||||
|
@ -2004,11 +2016,11 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
handleProblem( IProblem.SEMANTIC_NAME_NOT_FOUND, image, -1, -1, current.getLineNumber() );
|
handleProblem( IProblem.SEMANTIC_NAME_NOT_FOUND, image, -1, -1, current.getLineNumber(), true );
|
||||||
}
|
}
|
||||||
catch (ParserSymbolTableException e)
|
catch (ParserSymbolTableException e)
|
||||||
{
|
{
|
||||||
handleProblem( e.createProblemID(), image,typeName.getStartOffset(), typeName.getEndOffset(), typeName.getLineNumber() );
|
handleProblem( e.createProblemID(), image,typeName.getStartOffset(), typeName.getEndOffset(), typeName.getLineNumber(), true );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
s.setTypeSymbol( typeSymbol );
|
s.setTypeSymbol( typeSymbol );
|
||||||
|
@ -2073,7 +2085,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
){
|
){
|
||||||
if( parentScope.getASTExtension().getPrimaryDeclaration() instanceof IASTElaboratedTypeSpecifier ){
|
if( parentScope.getASTExtension().getPrimaryDeclaration() instanceof IASTElaboratedTypeSpecifier ){
|
||||||
//we are trying to define a member of a class for which we only have a forward declaration
|
//we are trying to define a member of a class for which we only have a forward declaration
|
||||||
handleProblem( scope, IProblem.SEMANTICS_RELATED, name.toString(), startOffset, nameEndOffset, startLine );
|
handleProblem( scope, IProblem.SEMANTICS_RELATED, name.toString(), startOffset, nameEndOffset, startLine, true );
|
||||||
}
|
}
|
||||||
IASTScope methodParentScope = (IASTScope)parentScope.getASTExtension().getPrimaryDeclaration();
|
IASTScope methodParentScope = (IASTScope)parentScope.getASTExtension().getPrimaryDeclaration();
|
||||||
ITokenDuple newName = name.getLastSegment();
|
ITokenDuple newName = name.getLastSegment();
|
||||||
|
@ -2121,7 +2133,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
while (p.hasNext()){
|
while (p.hasNext()){
|
||||||
ASTParameterDeclaration param = (ASTParameterDeclaration)p.next();
|
ASTParameterDeclaration param = (ASTParameterDeclaration)p.next();
|
||||||
if( param.getSymbol() == null )
|
if( param.getSymbol() == null )
|
||||||
handleProblem( IProblem.SEMANTICS_RELATED, param.getName(), param.getNameOffset(), param.getEndingOffset(), param.getStartingLine() );
|
handleProblem( IProblem.SEMANTICS_RELATED, param.getName(), param.getNameOffset(), param.getEndingOffset(), param.getStartingLine(), true );
|
||||||
functionParameters.add(param.getSymbol().getTypeInfo());
|
functionParameters.add(param.getSymbol().getTypeInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2470,7 +2482,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
while (p.hasNext()){
|
while (p.hasNext()){
|
||||||
ASTParameterDeclaration param = (ASTParameterDeclaration)p.next();
|
ASTParameterDeclaration param = (ASTParameterDeclaration)p.next();
|
||||||
if( param.getSymbol() == null )
|
if( param.getSymbol() == null )
|
||||||
handleProblem( IProblem.SEMANTICS_RELATED, param.getName(), param.getNameOffset(), param.getEndingOffset(), param.getNameLineNumber() );
|
handleProblem( IProblem.SEMANTICS_RELATED, param.getName(), param.getNameOffset(), param.getEndingOffset(), param.getNameLineNumber(), true );
|
||||||
functionParameters.add(param.getSymbol().getTypeInfo());
|
functionParameters.add(param.getSymbol().getTypeInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2493,7 +2505,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
ownerScope.getContainingSymbol().isType( TypeInfo.t_block ) )
|
ownerScope.getContainingSymbol().isType( TypeInfo.t_block ) )
|
||||||
{
|
{
|
||||||
//only needs to be previously declared if we are in a local class
|
//only needs to be previously declared if we are in a local class
|
||||||
handleProblem( IProblem.SEMANTIC_ILLFORMED_FRIEND, nameDuple.toString(), nameDuple.getStartOffset(), nameDuple.getEndOffset(), nameDuple.getLineNumber() );
|
handleProblem( IProblem.SEMANTIC_ILLFORMED_FRIEND, nameDuple.toString(), nameDuple.getStartOffset(), nameDuple.getEndOffset(), nameDuple.getLineNumber(), true );
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if( functionDeclaration != null && functionDeclaration.isType( isConstructor ? TypeInfo.t_constructor : TypeInfo.t_function ) )
|
} else if( functionDeclaration != null && functionDeclaration.isType( isConstructor ? TypeInfo.t_constructor : TypeInfo.t_function ) )
|
||||||
|
@ -2527,7 +2539,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
}
|
}
|
||||||
catch (ParserSymbolTableException e)
|
catch (ParserSymbolTableException e)
|
||||||
{
|
{
|
||||||
handleProblem(e.createProblemID(), nameDuple.toString(), nameDuple.getStartOffset(), nameDuple.getEndOffset(), nameDuple.getLineNumber() );
|
handleProblem(e.createProblemID(), nameDuple.toString(), nameDuple.getStartOffset(), nameDuple.getEndOffset(), nameDuple.getLineNumber(), true );
|
||||||
}
|
}
|
||||||
|
|
||||||
resolveLeftoverConstructorInitializerMembers( symbol, constructorChain );
|
resolveLeftoverConstructorInitializerMembers( symbol, constructorChain );
|
||||||
|
@ -2607,7 +2619,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
IContainerSymbol ownerScope = scopeToSymbol( scope );
|
IContainerSymbol ownerScope = scopeToSymbol( scope );
|
||||||
|
|
||||||
if( name == null )
|
if( name == null )
|
||||||
handleProblem( IProblem.SEMANTIC_NAME_NOT_PROVIDED, null, startingOffset, nameEndOffset, nameLine );
|
handleProblem( IProblem.SEMANTIC_NAME_NOT_PROVIDED, null, startingOffset, nameEndOffset, nameLine, true );
|
||||||
|
|
||||||
if(name.getSegmentCount() > 1)
|
if(name.getSegmentCount() > 1)
|
||||||
{
|
{
|
||||||
|
@ -2936,7 +2948,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
try {
|
try {
|
||||||
template.addTemplateParameter( param.getSymbol() );
|
template.addTemplateParameter( param.getSymbol() );
|
||||||
} catch (ParserSymbolTableException e) {
|
} catch (ParserSymbolTableException e) {
|
||||||
handleProblem( e.createProblemID(), param.getName(), startingOffset, -1, startingLine );
|
handleProblem( e.createProblemID(), param.getName(), startingOffset, -1, startingLine, true );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2970,7 +2982,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
try {
|
try {
|
||||||
template.addTemplateParameter( param.getSymbol() );
|
template.addTemplateParameter( param.getSymbol() );
|
||||||
} catch (ParserSymbolTableException e) {
|
} catch (ParserSymbolTableException e) {
|
||||||
handleProblem( e.createProblemID(), param.getName(), param.getStartingOffset(), param.getEndingOffset(), param.getStartingLine() ); //$NON-NLS-1$
|
handleProblem( e.createProblemID(), param.getName(), param.getStartingOffset(), param.getEndingOffset(), param.getStartingLine(), true ); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
symbol = template;
|
symbol = template;
|
||||||
|
@ -3047,7 +3059,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
ISymbol typeSymbol = cloneSimpleTypeSymbol( name, mapping, null );
|
ISymbol typeSymbol = cloneSimpleTypeSymbol( name, mapping, null );
|
||||||
|
|
||||||
if( typeSymbol == null )
|
if( typeSymbol == null )
|
||||||
handleProblem( scope, IProblem.SEMANTICS_RELATED, name, nameOffset, nameEndOffset, nameLine );
|
handleProblem( scope, IProblem.SEMANTICS_RELATED, name, nameOffset, nameEndOffset, nameLine, true );
|
||||||
|
|
||||||
setPointerOperators( typeSymbol, mapping.getPointerOperators(), mapping.getArrayModifiers() );
|
setPointerOperators( typeSymbol, mapping.getPointerOperators(), mapping.getArrayModifiers() );
|
||||||
|
|
||||||
|
@ -3126,7 +3138,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
containerSymbolName.toString(), containerSymbolName
|
containerSymbolName.toString(), containerSymbolName
|
||||||
.getFirstToken().getOffset(),
|
.getFirstToken().getOffset(),
|
||||||
containerSymbolName.getLastToken().getEndOffset(),
|
containerSymbolName.getLastToken().getEndOffset(),
|
||||||
containerSymbolName.getLastToken().getLineNumber());
|
containerSymbolName.getLastToken().getLineNumber(), true);
|
||||||
nameToken = name.getLastSegment().getFirstToken();
|
nameToken = name.getLastSegment().getFirstToken();
|
||||||
}
|
}
|
||||||
//template-id
|
//template-id
|
||||||
|
@ -3149,7 +3161,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
} catch (ParserSymbolTableException e) {
|
} catch (ParserSymbolTableException e) {
|
||||||
handleProblem(e.createProblemID(), nameToken.getImage(),
|
handleProblem(e.createProblemID(), nameToken.getImage(),
|
||||||
nameToken.getOffset(), nameToken.getEndOffset(),
|
nameToken.getOffset(), nameToken.getEndOffset(),
|
||||||
nameToken.getLineNumber());
|
nameToken.getLineNumber(), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
List args = null;
|
List args = null;
|
||||||
|
@ -3165,7 +3177,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
} catch (ParserSymbolTableException e) {
|
} catch (ParserSymbolTableException e) {
|
||||||
handleProblem(e.createProblemID(), nameToken.getImage(),
|
handleProblem(e.createProblemID(), nameToken.getImage(),
|
||||||
nameToken.getOffset(), nameToken.getEndOffset(),
|
nameToken.getOffset(), nameToken.getEndOffset(),
|
||||||
nameToken.getLineNumber());
|
nameToken.getLineNumber(), true);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
handleProblem(IProblem.SEMANTIC_INVALID_TEMPLATE, nameToken
|
handleProblem(IProblem.SEMANTIC_INVALID_TEMPLATE, nameToken
|
||||||
|
@ -3189,7 +3201,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
} catch (ParserSymbolTableException e1) {
|
} catch (ParserSymbolTableException e1) {
|
||||||
handleProblem(e1.createProblemID(), nameToken.getImage(),
|
handleProblem(e1.createProblemID(), nameToken.getImage(),
|
||||||
nameToken.getOffset(), nameToken.getEndOffset(),
|
nameToken.getOffset(), nameToken.getEndOffset(),
|
||||||
nameToken.getLineNumber());
|
nameToken.getLineNumber(), true);
|
||||||
}
|
}
|
||||||
ASTElaboratedTypeSpecifier elab = new ASTElaboratedTypeSpecifier(
|
ASTElaboratedTypeSpecifier elab = new ASTElaboratedTypeSpecifier(
|
||||||
checkSymbol, kind, startingOffset, startingLine, name
|
checkSymbol, kind, startingOffset, startingLine, name
|
||||||
|
@ -3226,7 +3238,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
} else {
|
} else {
|
||||||
handleProblem(IProblem.SEMANTIC_NAME_NOT_FOUND, newSymbolName,
|
handleProblem(IProblem.SEMANTIC_NAME_NOT_FOUND, newSymbolName,
|
||||||
nameToken.getOffset(), nameToken.getEndOffset(), nameToken
|
nameToken.getOffset(), nameToken.getEndOffset(), nameToken
|
||||||
.getLineNumber());
|
.getLineNumber(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -3252,7 +3264,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
ISymbol namespaceSymbol = lookupQualifiedName( startingSymbol, alias, references, true );
|
ISymbol namespaceSymbol = lookupQualifiedName( startingSymbol, alias, references, true );
|
||||||
|
|
||||||
if( namespaceSymbol.getType() != TypeInfo.t_namespace )
|
if( namespaceSymbol.getType() != TypeInfo.t_namespace )
|
||||||
handleProblem( IProblem.SEMANTIC_INVALID_OVERLOAD, alias.toString(), startingOffset, endOffset, startingLine );
|
handleProblem( IProblem.SEMANTIC_INVALID_OVERLOAD, alias.toString(), startingOffset, endOffset, startingLine, true );
|
||||||
|
|
||||||
ISymbol newSymbol = pst.newContainerSymbol( identifier, TypeInfo.t_namespace );
|
ISymbol newSymbol = pst.newContainerSymbol( identifier, TypeInfo.t_namespace );
|
||||||
newSymbol.setTypeSymbol( namespaceSymbol );
|
newSymbol.setTypeSymbol( namespaceSymbol );
|
||||||
|
@ -3263,7 +3275,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
}
|
}
|
||||||
catch (ParserSymbolTableException e)
|
catch (ParserSymbolTableException e)
|
||||||
{
|
{
|
||||||
handleProblem( e.createProblemID(), identifier, startingOffset, endOffset, startingLine );
|
handleProblem( e.createProblemID(), identifier, startingOffset, endOffset, startingLine, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
ASTNamespaceAlias astAlias = new ASTNamespaceAlias(
|
ASTNamespaceAlias astAlias = new ASTNamespaceAlias(
|
||||||
|
|
Loading…
Add table
Reference in a new issue