cppu/qa/cppumaker/test_cppumaker.cxx | 3 --- cppu/qa/cppumaker/types.idl | 1 - unoidl/source/sourceprovider-parser.y | 20 ++++++++++++-------- 3 files changed, 12 insertions(+), 12 deletions(-)
New commits: commit ca78613fa015c03ea2c554247924c165a7aa34e7 Author: Stephan Bergmann <[email protected]> Date: Thu Sep 19 08:16:18 2013 +0200 Unlike idlc, unoidl doesn't support out-of-range byte consts Change-Id: Ib1c98ea10a2d05e74a3aae9b2868a69c66efa543 diff --git a/cppu/qa/cppumaker/test_cppumaker.cxx b/cppu/qa/cppumaker/test_cppumaker.cxx index f29c5ea..8dfe84a 100644 --- a/cppu/qa/cppumaker/test_cppumaker.cxx +++ b/cppu/qa/cppumaker/test_cppumaker.cxx @@ -533,9 +533,6 @@ void Test::testConstants() { CPPUNIT_ASSERT_EQUAL( SAL_MAX_INT8, test::codemaker::cppumaker::Constants::byteMax); CPPUNIT_ASSERT_EQUAL( - static_cast< sal_Int8 >(-1), - test::codemaker::cppumaker::Constants::byteNeg); - CPPUNIT_ASSERT_EQUAL( SAL_MIN_INT16, test::codemaker::cppumaker::Constants::shortMin); CPPUNIT_ASSERT_EQUAL( SAL_MAX_INT16, test::codemaker::cppumaker::Constants::shortMax); diff --git a/cppu/qa/cppumaker/types.idl b/cppu/qa/cppumaker/types.idl index 2c0a055..f22d52f 100644 --- a/cppu/qa/cppumaker/types.idl +++ b/cppu/qa/cppumaker/types.idl @@ -690,7 +690,6 @@ exception TestException2: TestException1 {}; constants Constants { const byte byteMin = -128; const byte byteMax = 127; - const byte byteNeg = 255; const short shortMin = -32768; const short shortMax = 32767; const unsigned short unsignedShortMin = 0; commit dc331015a5620815ef9349e69816a7fd300158eb Author: Stephan Bergmann <[email protected]> Date: Thu Sep 19 08:15:03 2013 +0200 Handle special case -(2^63) correctly Change-Id: Ia3d8931341b2d47ef76265d94410d83f51a068c0 diff --git a/unoidl/source/sourceprovider-parser.y b/unoidl/source/sourceprovider-parser.y index 9c7e00e..4d4f8e6 100644 --- a/unoidl/source/sourceprovider-parser.y +++ b/unoidl/source/sourceprovider-parser.y @@ -3078,15 +3078,19 @@ unaryExpr: $$ = unoidl::detail::SourceProviderExpr::Int(-$2.ival); break; case unoidl::detail::SourceProviderExpr::TYPE_UINT: - if ($2.uval > SAL_MAX_INT64) { - error( - @2, yyscanner, - ("cannot negate out-of-range value " - + OUString::number($2.uval))); - YYERROR; + if ($2.uval == SAL_CONST_UINT64(0x8000000000000000)) { + $$ = unoidl::detail::SourceProviderExpr::Int(SAL_MIN_INT64); + } else { + if ($2.uval > SAL_MAX_INT64) { + error( + @2, yyscanner, + ("cannot negate out-of-range value " + + OUString::number($2.uval))); + YYERROR; + } + $$ = unoidl::detail::SourceProviderExpr::Int( + -static_cast<sal_Int64>($2.uval)); } - $$ = unoidl::detail::SourceProviderExpr::Int( - -static_cast<sal_Int64>($2.uval)); break; case unoidl::detail::SourceProviderExpr::TYPE_FLOAT: $$ = unoidl::detail::SourceProviderExpr::Float(-$2.fval); _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
