mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Bug 379511 - Forward declaration in function parameter ignored by
translation unit. Modified patch by Lukas Felber.
This commit is contained in:
parent
fab94256f0
commit
3ae34a0344
2 changed files with 18 additions and 3 deletions
|
@ -27,6 +27,7 @@ import java.util.Iterator;
|
|||
|
||||
import junit.framework.TestSuite;
|
||||
|
||||
import org.eclipse.cdt.core.dom.IName;
|
||||
import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
|
||||
import org.eclipse.cdt.core.dom.ast.EScopeKind;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator;
|
||||
|
@ -9684,4 +9685,13 @@ public class AST2CPPTests extends AST2BaseTest {
|
|||
f= bh.assertNonProblem("f( 0 )", 1);
|
||||
assertEquals("void (int)", ASTTypeUtil.getType(f.getType()));
|
||||
}
|
||||
|
||||
// void foo(struct S s);
|
||||
public void testParameterForwardDeclaration_379511() throws Exception {
|
||||
BindingAssertionHelper bh= new BindingAssertionHelper(getAboveComment(), true);
|
||||
ICPPClassType struct= bh.assertNonProblem("S", 1, ICPPClassType.class);
|
||||
IName[] declarations= bh.getTranslationUnit().getDeclarations(struct);
|
||||
assertEquals(1, declarations.length);
|
||||
assertEquals(bh.findName("S", 1), declarations[0]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,11 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.cdt.internal.core.dom.parser.cpp.semantics;
|
||||
|
||||
import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.*;
|
||||
import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.ALLCVQ;
|
||||
import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.CVTYPE;
|
||||
import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.TDEF;
|
||||
import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.getNestedType;
|
||||
import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.getUltimateTypeUptoPointers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
@ -1468,8 +1472,9 @@ public class CPPVisitor extends ASTQueries {
|
|||
break;
|
||||
} else if (prop == IASTElaboratedTypeSpecifier.TYPE_NAME) {
|
||||
IASTNode p = name.getParent().getParent();
|
||||
if (p instanceof IASTSimpleDeclaration &&
|
||||
((IASTSimpleDeclaration) p).getDeclarators().length == 0) {
|
||||
if (p instanceof IASTParameterDeclaration ||
|
||||
(p instanceof IASTSimpleDeclaration &&
|
||||
((IASTSimpleDeclaration) p).getDeclarators().length == 0)) {
|
||||
break;
|
||||
}
|
||||
} else if (prop == IASTDeclarator.DECLARATOR_NAME) {
|
||||
|
|
Loading…
Add table
Reference in a new issue