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 1be4d449c87..858e8723c9f 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 @@ -10834,6 +10834,15 @@ public class AST2CPPTests extends AST2TestBase { helper.assertNonProblemOnFirstIdentifier("fint({vchar"); } + // void waldo(char x); + // + // void test() { + // waldo({1}); + // } + public void testNarrowingConversionInListInitialization_491748() throws Exception { + parseAndCheckBindings(); + } + // namespace std { // struct string {}; // struct exception {}; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ArithmeticConversion.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ArithmeticConversion.java index 9bfb114898a..45f9ec70162 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ArithmeticConversion.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ArithmeticConversion.java @@ -364,6 +364,19 @@ public abstract class ArithmeticConversion { } return n < (Integer.MAX_VALUE + 1L) * 2; + case eChar: + return 0 <= n && n <= 0xFF; + + case eChar16: + case eWChar: + return 0 <= n && n <= 0xFFFF; + + case eChar32: + return 0 <= n && n <= 0xFFFFFFFFL; + + case eDecimal32: + return Integer.MIN_VALUE <= n && n <= Integer.MAX_VALUE; + case eFloat: float f= n; return (long) f == n;