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 11dc769b395..0ab6bd5d649 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 @@ -11928,6 +11928,90 @@ public class AST2CPPTests extends AST2CPPTestBase { checkUserDefinedLiteralIsRet(getAboveComment()); } + // class Ret {}; + // Ret operator "" _X(char const * const s, unsigned long sz) { return Ret(); } + // auto test = "123"_X; + public void testUserDefinedLiteralConcatenation_528196_1a() throws Exception { + checkUserDefinedLiteralIsRet(getAboveComment()); + } + + // class Ret {}; + // Ret operator "" _X(char const * volatile s, unsigned long sz) { return Ret(); } + // auto test = "123"_X; + public void testUserDefinedLiteralConcatenation_528196_1b() throws Exception { + checkUserDefinedLiteralIsRet(getAboveComment()); + } + + // class Ret {}; + // Ret operator "" _X(char const * const volatile s, unsigned long sz) { return Ret(); } + // auto test = "123"_X; + public void testUserDefinedLiteralConcatenation_528196_1c() throws Exception { + checkUserDefinedLiteralIsRet(getAboveComment()); + } + + // class Ret {}; + // Ret operator "" _X(char const * s, unsigned long const sz) { return Ret(); } + // auto test = "123"_X; + public void testUserDefinedLiteralConcatenation_528196_2a() throws Exception { + checkUserDefinedLiteralIsRet(getAboveComment()); + } + + // class Ret {}; + // Ret operator "" _X(char const * s, unsigned long volatile sz) { return Ret(); } + // auto test = "123"_X; + public void testUserDefinedLiteralConcatenation_528196_2b() throws Exception { + checkUserDefinedLiteralIsRet(getAboveComment()); + } + + // class Ret {}; + // Ret operator "" _X(char const * s, unsigned long const volatile sz) { return Ret(); } + // auto test = "123"_X; + public void testUserDefinedLiteralConcatenation_528196_2c() throws Exception { + checkUserDefinedLiteralIsRet(getAboveComment()); + } + + // class Ret {}; + // Ret operator "" _X(unsigned long long const) { return Ret(); } + // auto test = 10_X; + public void testUserDefinedLiteralConcatenation_528196_3a() throws Exception { + checkUserDefinedLiteralIsRet(getAboveComment()); + } + + // class Ret {}; + // Ret operator "" _X(unsigned long long volatile) { return Ret(); } + // auto test = 10_X; + public void testUserDefinedLiteralConcatenation_528196_3b() throws Exception { + checkUserDefinedLiteralIsRet(getAboveComment()); + } + + // class Ret {}; + // Ret operator "" _X(unsigned long long const volatile) { return Ret(); } + // auto test = 10_X; + public void testUserDefinedLiteralConcatenation_528196_3c() throws Exception { + checkUserDefinedLiteralIsRet(getAboveComment()); + } + + // class Ret {}; + // Ret operator "" _X(char const) { return Ret(); } + // auto test = 'a'_X; + public void testUserDefinedLiteralConcatenation_528196_4a() throws Exception { + checkUserDefinedLiteralIsRet(getAboveComment()); + } + + // class Ret {}; + // Ret operator "" _X(char volatile) { return Ret(); } + // auto test = 'a'_X; + public void testUserDefinedLiteralConcatenation_528196_4b() throws Exception { + checkUserDefinedLiteralIsRet(getAboveComment()); + } + + // class Ret {}; + // Ret operator "" _X(char const volatile) { return Ret(); } + // auto test = 'a'_X; + public void testUserDefinedLiteralConcatenation_528196_4c() throws Exception { + checkUserDefinedLiteralIsRet(getAboveComment()); + } + // class Ret {}; // Ret operator "" _X(const char* s, unsigned sz) { return Ret(); } // Ret operator "" _Y(const char* s, unsigned sz) { return Ret(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java index fbb36114cc1..84f7b656cb4 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java @@ -3302,7 +3302,7 @@ public class CPPSemantics { } else if (kind == IASTLiteralExpression.lk_float_constant) { type = new CPPBasicType(Kind.eDouble, IBasicType.IS_LONG); } - return func.getParameters()[0].getType().isSameType(type); + return SemanticUtil.getNestedType(func.getParameters()[0].getType(), CVTYPE).isSameType(type); } } return false;