mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
This commit is contained in:
parent
3ca43539a1
commit
822ad118ce
4 changed files with 28 additions and 4 deletions
|
@ -1,3 +1,6 @@
|
|||
2004-04-20 Andrew Niefer
|
||||
added parser/CompleteParseASTTest.testBug59302()
|
||||
|
||||
2004-04-20 Andrew Niefer
|
||||
-added parser/CompleteParseASTTemplateTest.test_14_7_3__11_ExplicitSpecializationArgumentDeduction()
|
||||
-added parser/CompleteParseASTTemplateTest.test_14_8_1__2_ExplicitArgumentSpecification()
|
||||
|
|
|
@ -1580,4 +1580,22 @@ public class CompleteParseASTTest extends CompleteParseBaseTest
|
|||
IASTSimpleTypeSpecifier simpleTypeSpec = ((IASTSimpleTypeSpecifier)bar.getReturnType().getTypeSpecifier());
|
||||
assertEquals( simpleTypeSpec.getType(), IASTGCCSimpleTypeSpecifier.Type.TYPEOF );
|
||||
}
|
||||
|
||||
public void testBug59302() throws Exception
|
||||
{
|
||||
Writer writer = new StringWriter();
|
||||
writer.write("class A { class N{}; }; ");
|
||||
writer.write("class B { friend class A::N; }; ");
|
||||
|
||||
Iterator i = parse( writer.toString() ).getDeclarations();
|
||||
IASTClassSpecifier A = (IASTClassSpecifier) ((IASTAbstractTypeSpecifierDeclaration)i.next()).getTypeSpecifier();
|
||||
IASTClassSpecifier B = (IASTClassSpecifier) ((IASTAbstractTypeSpecifierDeclaration)i.next()).getTypeSpecifier();
|
||||
|
||||
i = getDeclarations( A );
|
||||
IASTClassSpecifier N = (IASTClassSpecifier) ((IASTAbstractTypeSpecifierDeclaration)i.next()).getTypeSpecifier();
|
||||
|
||||
assertFalse( A.getFriends().hasNext() );
|
||||
assertEquals( B.getFriends().next(), N );
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
2004-04-20 Andrew Niefer
|
||||
fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=59302 - Nested friend mishandled
|
||||
|
||||
2004-04-20 Andrew Niefer
|
||||
- implement IContainerSymbol.lookupFunctionTemplateId
|
||||
- handle explicit template argument specification
|
||||
|
|
|
@ -2863,6 +2863,8 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
public IASTElaboratedTypeSpecifier createElaboratedTypeSpecifier(IASTScope scope, ASTClassKind kind, ITokenDuple name, int startingOffset, int startingLine, int endOffset, int endingLine, boolean isForewardDecl, boolean isFriend) throws ASTSemanticException
|
||||
{
|
||||
IContainerSymbol currentScopeSymbol = scopeToSymbol(scope);
|
||||
IContainerSymbol originalScope = currentScopeSymbol;
|
||||
|
||||
TypeInfo.eType pstType = classKindToTypeInfo(kind);
|
||||
List references = new ArrayList();
|
||||
IToken nameToken = name.getFirstToken();
|
||||
|
@ -2932,8 +2934,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
checkSymbol.setIsForwardDeclaration(true);
|
||||
try {
|
||||
if (isFriend) {
|
||||
((IDerivableContainerSymbol) currentScopeSymbol)
|
||||
.addFriend(checkSymbol);
|
||||
((IDerivableContainerSymbol) originalScope).addFriend(checkSymbol);
|
||||
} else {
|
||||
if (!isTemplateId)
|
||||
currentScopeSymbol.addSymbol(checkSymbol);
|
||||
|
@ -2953,8 +2954,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
|||
references, isForewardDecl);
|
||||
attachSymbolExtension(checkSymbol, elab, !isForewardDecl);
|
||||
} else if (isFriend) {
|
||||
((IDerivableContainerSymbol) currentScopeSymbol)
|
||||
.addFriend(checkSymbol);
|
||||
((IDerivableContainerSymbol) originalScope).addFriend(checkSymbol);
|
||||
}
|
||||
if (checkSymbol != null) {
|
||||
if (scope instanceof IASTTemplateInstantiation) {
|
||||
|
|
Loading…
Add table
Reference in a new issue