aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJoey Yakimowich-Payne <jyapayne@gmail.com>2020-04-17 07:37:17 -0600
committerJoey Yakimowich-Payne <jyapayne@gmail.com>2020-04-26 09:10:49 -0600
commit055d6bee73eb988ae498a57d29dd3d80a8928721 (patch)
tree4728ebc68f6074ac2083f8324e75d3afb5052e9d /tests
parent305d90583e5dc7a8dde012c982047df9dee21f8e (diff)
downloadnimterop-055d6bee73eb988ae498a57d29dd3d80a8928721.tar.gz
nimterop-055d6bee73eb988ae498a57d29dd3d80a8928721.zip
Add math_expression and fix ast2 tests
Update to include more expressions
Diffstat (limited to 'tests')
-rw-r--r--tests/include/tast2.h18
-rw-r--r--tests/tast2.nim22
2 files changed, 39 insertions, 1 deletions
diff --git a/tests/include/tast2.h b/tests/include/tast2.h
index bdf8823..7e15ac0 100644
--- a/tests/include/tast2.h
+++ b/tests/include/tast2.h
@@ -8,6 +8,24 @@ extern "C" {
#define D "hello"
#define E 'c'
+#define UEXPR (1234u << 1)
+#define ULEXPR (1234ul << 2)
+#define ULLEXPR (1234ull << 3)
+#define LEXPR (1234l << 4)
+#define LLEXPR (1234ll << 5)
+
+#define SHL1 (1u << 1)
+#define SHL2 (1u << 2)
+#define SHL3 (1u << 3)
+#define COERCE 645635634896ull + -35436
+#define COERCE2 645635634896 + -35436
+#define BINEXPR ~(-(1u << !-1)) ^ (10 >> 1)
+#define BOOL true
+#define MATHEXPR (1 + 2/3*20 - 100)
+#define ANDEXPR (100 & 11000)
+
+#define ALLSHL (SHL1 | SHL2 | SHL3)
+
struct A0;
struct A1 {};
typedef struct A2;
diff --git a/tests/tast2.nim b/tests/tast2.nim
index e13c4ac..d65e34a 100644
--- a/tests/tast2.nim
+++ b/tests/tast2.nim
@@ -105,6 +105,26 @@ assert C == 0x10
assert D == "hello"
assert E == 'c'
+assert UEXPR == (1234.uint shl 1)
+assert ULEXPR == (1234.uint32 shl 2)
+assert ULLEXPR == (1234.uint64 shl 3)
+assert LEXPR == (1234.int32 shl 4)
+assert LLEXPR == (1234.int64 shl 5)
+
+assert COERCE == 645635599460'u64
+assert COERCE2 == 645635599460'i64
+
+assert BINEXPR == 5
+assert BOOL == true
+assert MATHEXPR == -99
+assert ANDEXPR == 96
+
+assert SHL1 == (1.uint shl 1)
+assert SHL2 == (1.uint shl 2)
+assert SHL3 == (1.uint shl 3)
+
+assert ALLSHL == (SHL1 or SHL2 or SHL3)
+
assert A0 is object
testFields(A0, "f1!cint")
checkPragmas(A0, pHeaderBy, istype = false)
@@ -271,7 +291,7 @@ var a21p: A21p
a21p = addr a20
assert A22 is object
-testFields(A22, "f1|f2!ptr ptr cint|array[123 + 132, ptr cint]")
+testFields(A22, "f1|f2!ptr ptr cint|array[typeof(123)(123 + cast[typeof(123)](132)), ptr cint]")
checkPragmas(A22, pHeaderBy, istype = false)
var a22: A22
a22.f1 = addr a15.a2[0]