test: add a test for ll suffixed types being promoted to ULL

This addresses the follow up test case discussed in PR23651.  Windows
will not promote a macro literal suffixed with `ll` or `i64` to an
unsigned long long even upon an overflow.  This tests that the corner
case behaviour for importing a long long literal matches the platform
expectations.
This commit is contained in:
Saleem Abdulrasool
2019-04-01 10:53:54 -07:00
parent f85ca6c01a
commit 09bc471e87
2 changed files with 18 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -verify %s
import macros
func verifyIsSigned(_: Int64) { }
func verifyIsUnsigned(_: UInt64) { }
// Windows will not convert a long long value that overflows into an unsigned
// long long if it has the `ll` suffix of `i64` suffix. Ensure that the type is
// imported appropriately.
#if os(Windows)
verifyIsSigned(LL_TO_ULL)
#else
verifyIsUnsigned(LL_TO_ULL)
#endif

View File

@@ -25,6 +25,8 @@
#define TRUE 1 #define TRUE 1
#define FALSE 0 #define FALSE 0
#define LL_TO_ULL 0x8000000000000000LL
#define A_PI M_PI #define A_PI M_PI
#define VERSION_STRING "Swift 1.0" #define VERSION_STRING "Swift 1.0"