1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Patch for Andrew Niefer

core:
  PST changes:
  - modify lookupConstructor to copy the constructor list before resolving 
on it
  - modify checkUserDefinedConversionSequence the same way
  - modify isValidFunctionOverload to check for forward declarations

core.tests:
- added testBug43951 to CompleteParseASTTest
This commit is contained in:
John Camelon 2003-10-01 21:15:45 +00:00
parent 9b33f17d3f
commit e63b06fc5f
4 changed files with 34 additions and 3 deletions

View file

@ -1,3 +1,6 @@
2003-10-01 Andrew Niefer
added testBug43951 to CompleteParseASTTest
2003-10-01 Andrew Niefer
modified OtherPatternTests.testBug42911() and renamed it testBug42911_43988

View file

@ -31,7 +31,6 @@ import org.eclipse.cdt.core.parser.ast.IASTFunction;
import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
import org.eclipse.cdt.core.parser.ast.IASTMethod;
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
import org.eclipse.cdt.core.parser.ast.IASTOffsetableElement;
import org.eclipse.cdt.core.parser.ast.IASTReference;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier;
@ -906,4 +905,15 @@ public class CompleteParseASTTest extends CompleteParseBaseTest
fail();
}
}
public void testBug43951() throws Exception
{
Iterator i = parse( "class B{ B(); ~B(); }; B::B(){} B::~B(){}", false ).getDeclarations();
IASTClassSpecifier b = (IASTClassSpecifier)((IASTAbstractTypeSpecifierDeclaration)i.next()).getTypeSpecifier();
assertEquals( b.getName(), "B");
IASTMethod constructor = (IASTMethod) i.next();
assertEquals( constructor.getName(), "B" );
assertTrue( constructor.previouslyDeclared() );
}
}

View file

@ -3,6 +3,13 @@
Fixed Bug 43997 : Search results: selection includes preceding whitespace
Fixed Bug 44034 : Scanner failure on #undef
2003-10-01 Andrew Niefer
bug43951 - search on ctor declarations returns definition too.
PST changes:
- modify lookupConstructor to copy the constructor list before resolving on it
- modify checkUserDefinedConversionSequence the same way
- modify isValidFunctionOverload to check for forward declarations
2003-10-01 Bogdan Gheorghe
Modified CDT log dump in Parser.fetchToken to include error message

View file

@ -512,6 +512,12 @@ public class ParserSymbolTable {
return false;
}
//handle forward decls
if( origSymbol.getTypeInfo().isForwardDeclaration() &&
origSymbol.getTypeSymbol() == newSymbol )
{
return true;
}
if( origSymbol.hasSameParameters( newSymbol ) ){
//functions with the same name and same parameter types cannot be overloaded if any of them
//is static
@ -1473,7 +1479,8 @@ public class ParserSymbolTable {
}
if( container.getConstructors() != null ){
constructor = resolveFunction( data, container.getConstructors() );
LinkedList constructors = new LinkedList( container.getConstructors() );
constructor = resolveFunction( data, constructors );
}
if( constructor != null && constructor.getTypeInfo().checkBit( TypeInfo.isExplicit ) ){
constructor = null;
@ -3294,7 +3301,11 @@ public class ParserSymbolTable {
LookupData data = new LookupData( EMPTY_NAME, TypeInfo.t_constructor, null );
data.parameters = parameters;
return ParserSymbolTable.resolveFunction( data, getConstructors() );
List constructors = new LinkedList();
if( getConstructors() != null )
constructors.addAll( getConstructors() );
return ParserSymbolTable.resolveFunction( data, constructors );
}
/**