1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-23 17:05:26 +02:00

Bug 462348 - Follow-up to handle nested classes properly

Change-Id: Ia9103237a55ded5e0cacc1a31798da737fe0c8cc
Signed-off-by: Nathan Ridge <zeratul976@hotmail.com>
This commit is contained in:
Nathan Ridge 2015-03-21 01:38:43 -04:00
parent 198b722894
commit 2710dbd206
2 changed files with 19 additions and 3 deletions

View file

@ -8771,7 +8771,21 @@ public class AST2TemplateTests extends AST2TestBase {
//
// using type = TypeTemplate<Size_tTemplate<packSize()>>;
// };
public void testAmbiguityResolutionOrder_462348() throws Exception {
public void testAmbiguityResolutionOrder_462348a() throws Exception {
parseAndCheckBindings();
}
// template <typename> struct TypeTemplate {};
// template <int> struct Size_tTemplate {};
//
// template <typename... ParameterPack> struct Test {
// static constexpr int packSize() { return sizeof...(ParameterPack); }
//
// struct nested {
// using type = TypeTemplate<Size_tTemplate<packSize()>>;
// };
// };
public void testAmbiguityResolutionOrder_462348b() throws Exception {
parseAndCheckBindings();
}
}

View file

@ -14,6 +14,7 @@ package org.eclipse.cdt.internal.core.dom.parser.cpp;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.HashSet;
import java.util.Iterator;
import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
@ -223,8 +224,9 @@ final class CPPASTAmbiguityResolver extends ASTVisitor {
* If 'node' has been deferred for later processing, process it now.
*/
public void resolvePendingAmbiguities(IASTNode node) {
if (!fDeferredNodes.isEmpty()) {
Deque<IASTNode> deferred = fDeferredNodes.getLast();
Iterator<Deque<IASTNode>> iterator = fDeferredNodes.descendingIterator();
while (iterator.hasNext()) {
Deque<IASTNode> deferred = iterator.next();
for (IASTNode deferredNode : deferred) {
if (deferredNode == node) {
int deferFunctions = fDeferFunctions;