diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java index eae38c57ac0..f38ec70b8ba 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java @@ -11348,6 +11348,17 @@ public class AST2CPPTests extends AST2CPPTestBase { assertSameType((ITypedef) helper.assertNonProblem("loong_type"), CPPBasicType.LONG); } + // template + // struct underlying_type { + // using type = __underlying_type(T); + // }; + // enum class E : short {}; + // using target = underlying_type::type; + public void testUnderlyingType_548954() throws Exception { + BindingAssertionHelper helper = getAssertionHelper(); + assertSameType((ITypedef) helper.assertNonProblem("target"), CPPBasicType.SHORT); + } + // template // struct underlying_type { // typedef __underlying_type(T) type; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java index 7b9d8ba7562..f5aaab64105 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java @@ -2780,6 +2780,7 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser { // gcc-special case IGCCToken.t_typeof: case IGCCToken.t__attribute__: + case IGCCToken.tTT_underlying_type: // content assist case IToken.tCOMPLETION: