diff --git a/lib/platform.cpp b/lib/platform.cpp index 833c012ab8e..85614c6ea29 100644 --- a/lib/platform.cpp +++ b/lib/platform.cpp @@ -73,7 +73,7 @@ bool Platform::set(Type t) sizeof_wchar_t = 2; sizeof_size_t = 4; sizeof_pointer = 4; - defaultSign = '\0'; + defaultSign = 's'; char_bit = 8; calculateBitMembers(); return true; @@ -90,7 +90,7 @@ bool Platform::set(Type t) sizeof_wchar_t = 2; sizeof_size_t = 8; sizeof_pointer = 8; - defaultSign = '\0'; + defaultSign = 's'; char_bit = 8; calculateBitMembers(); return true; @@ -107,7 +107,7 @@ bool Platform::set(Type t) sizeof_wchar_t = 4; sizeof_size_t = 4; sizeof_pointer = 4; - defaultSign = '\0'; + defaultSign = 's'; char_bit = 8; calculateBitMembers(); return true; @@ -124,7 +124,7 @@ bool Platform::set(Type t) sizeof_wchar_t = 4; sizeof_size_t = 8; sizeof_pointer = 8; - defaultSign = '\0'; + defaultSign = 's'; char_bit = 8; calculateBitMembers(); return true; diff --git a/releasenotes.txt b/releasenotes.txt index f130e957aec..e288b784a2e 100644 --- a/releasenotes.txt +++ b/releasenotes.txt @@ -19,3 +19,7 @@ Changed interface: Infrastructure & dependencies: - + +Other: +- The built-in "win*" and "unix*" platforms will now default to signed char type instead of unknown signedness. If you require unsigned chars please specify "--funsigned-char" +- diff --git a/test/testplatform.cpp b/test/testplatform.cpp index c0f7bb2c017..e29551463d3 100644 --- a/test/testplatform.cpp +++ b/test/testplatform.cpp @@ -85,7 +85,7 @@ class TestPlatform : public TestFixture { ASSERT_EQUALS(2, platform.sizeof_wchar_t); ASSERT_EQUALS(4, platform.sizeof_size_t); ASSERT_EQUALS(4, platform.sizeof_pointer); - ASSERT_EQUALS('\0', platform.defaultSign); + ASSERT_EQUALS('s', platform.defaultSign); ASSERT_EQUALS(8, platform.char_bit); ASSERT_EQUALS(16, platform.short_bit); ASSERT_EQUALS(32, platform.int_bit); @@ -110,7 +110,7 @@ class TestPlatform : public TestFixture { ASSERT_EQUALS(4, platform.sizeof_wchar_t); ASSERT_EQUALS(8, platform.sizeof_size_t); ASSERT_EQUALS(8, platform.sizeof_pointer); - ASSERT_EQUALS('\0', platform.defaultSign); + ASSERT_EQUALS('s', platform.defaultSign); ASSERT_EQUALS(8, platform.char_bit); ASSERT_EQUALS(16, platform.short_bit); ASSERT_EQUALS(32, platform.int_bit); @@ -138,7 +138,7 @@ class TestPlatform : public TestFixture { ASSERT_EQUALS(2, platform.sizeof_wchar_t); ASSERT_EQUALS(4, platform.sizeof_size_t); ASSERT_EQUALS(4, platform.sizeof_pointer); - ASSERT_EQUALS('\0', platform.defaultSign); + ASSERT_EQUALS('s', platform.defaultSign); ASSERT_EQUALS(8, platform.char_bit); ASSERT_EQUALS(16, platform.short_bit); ASSERT_EQUALS(32, platform.int_bit); @@ -166,7 +166,7 @@ class TestPlatform : public TestFixture { ASSERT_EQUALS(4, platform.sizeof_wchar_t); ASSERT_EQUALS(4, platform.sizeof_size_t); ASSERT_EQUALS(4, platform.sizeof_pointer); - ASSERT_EQUALS('\0', platform.defaultSign); + ASSERT_EQUALS('s', platform.defaultSign); ASSERT_EQUALS(8, platform.char_bit); ASSERT_EQUALS(16, platform.short_bit); ASSERT_EQUALS(32, platform.int_bit); @@ -194,7 +194,7 @@ class TestPlatform : public TestFixture { ASSERT_EQUALS(2, platform.sizeof_wchar_t); ASSERT_EQUALS(8, platform.sizeof_size_t); ASSERT_EQUALS(8, platform.sizeof_pointer); - ASSERT_EQUALS('\0', platform.defaultSign); + ASSERT_EQUALS('s', platform.defaultSign); ASSERT_EQUALS(8, platform.char_bit); ASSERT_EQUALS(16, platform.short_bit); ASSERT_EQUALS(32, platform.int_bit); diff --git a/test/testtype.cpp b/test/testtype.cpp index bf36182c59a..b8cfae820d5 100644 --- a/test/testtype.cpp +++ b/test/testtype.cpp @@ -103,16 +103,16 @@ class TestType : public TestFixture { // unsigned types getting promoted to int sizeof(int) = 4 bytes // and unsigned types having already a size of 4 bytes { - const std::string types[] = {"unsigned char", /*[unsigned]*/ "char", "bool", "unsigned short", "unsigned int", "unsigned long"}; + const std::string types[] = {"unsigned char", "bool", "unsigned short", "unsigned int", "unsigned long"}; for (const std::string& type : types) { check(type + " f(" + type +" x) { return x << 31; }", dinit(CheckOptions, $.settings = &settings)); - ASSERT_EQUALS("", errout_str()); + ASSERT_EQUALS_MSG("", errout_str(), type); check(type + " f(" + type +" x) { return x << 33; }", dinit(CheckOptions, $.settings = &settings)); - ASSERT_EQUALS("[test.cpp:1]: (error) Shifting 32-bit value by 33 bits is undefined behaviour\n", errout_str()); + ASSERT_EQUALS_MSG("[test.cpp:1]: (error) Shifting 32-bit value by 33 bits is undefined behaviour\n", errout_str(), type); check(type + " f(int x) { return (x = (" + type + ")x << 32); }", dinit(CheckOptions, $.settings = &settings)); - ASSERT_EQUALS("[test.cpp:1]: (error) Shifting 32-bit value by 32 bits is undefined behaviour\n", errout_str()); + ASSERT_EQUALS_MSG("[test.cpp:1]: (error) Shifting 32-bit value by 32 bits is undefined behaviour\n", errout_str(), type); check(type + " foo(" + type + " x) { return x << 31; }", dinit(CheckOptions, $.settings = &settings)); - ASSERT_EQUALS("", errout_str()); + ASSERT_EQUALS_MSG("", errout_str(), type); } } // signed types getting promoted to int sizeof(int) = 4 bytes