fix set! missing typecast (#324)

This commit is contained in:
water111
2021-03-17 19:26:35 -04:00
committed by GitHub
parent d60d9b639a
commit 4262145c99
12 changed files with 934 additions and 30 deletions
@@ -2350,21 +2350,21 @@ TEST_F(FormRegressionTest, ExprStringToInt) {
std::string type = "(function string int)";
std::string expected =
"(defun test-function ((arg0 string))\n"
" (let\n"
" ((a0-1 (-> arg0 data)) (v0-0 0) (v1-0 #f))\n"
" (let ((a0-1 (-> arg0 data))\n"
" (v0-0 0)\n"
" (v1-0 #f)\n"
" )\n"
" (cond\n"
" ((= (-> a0-1 0) 35)\n"
" (let\n"
" ((a0-2 (&-> a0-1 1)))\n"
" (let ((a0-2 (&-> a0-1 1)))\n"
" (cond\n"
" ((or (= (-> a0-2 0) 120) (= (-> a0-2 0) 88))\n"
" (let\n"
" ((a0-3 (&-> a0-2 1)))\n"
" (when\n"
" (= (-> a0-3 1) 45)\n"
" (let ((a0-3 (&-> a0-2 1)))\n"
" (when (= (-> a0-3 1) 45)\n"
" (set! v1-0 #t)\n"
" (set! a0-3 (&-> a0-3 1))\n"
" (let ((a1-8 a0-3)))\n"
" (let ((a1-8 a0-3))\n"
" )\n"
" )\n"
" (while\n"
" (or\n"
@@ -2386,8 +2386,12 @@ TEST_F(FormRegressionTest, ExprStringToInt) {
" (>= (-> a0-3 0) (the-as uint 65))\n"
" (>= (the-as uint 70) (-> a0-3 0))\n"
" )\n"
" (set! v0-0 (+ (+ (-> a0-3 0) -55) (the-as uint (shl v0-0 4))))\n"
" (let ((a1-14 (the-as uint v0-0))))\n"
" (set!\n"
" v0-0\n"
" (the-as int (+ (+ (-> a0-3 0) -55) (the-as uint (shl v0-0 4))))\n"
" )\n"
" (let ((a1-14 (the-as uint v0-0)))\n"
" )\n"
" )\n"
" (else\n"
" (cond\n"
@@ -2395,12 +2399,20 @@ TEST_F(FormRegressionTest, ExprStringToInt) {
" (>= (-> a0-3 0) (the-as uint 97))\n"
" (>= (the-as uint 102) (-> a0-3 0))\n"
" )\n"
" (set! v0-0 (+ (+ (-> a0-3 0) -87) (the-as uint (shl v0-0 4))))\n"
" (let ((a1-20 (the-as uint v0-0))))\n"
" (set!\n"
" v0-0\n"
" (the-as int (+ (+ (-> a0-3 0) -87) (the-as uint (shl v0-0 4))))\n"
" )\n"
" (let ((a1-20 (the-as uint v0-0)))\n"
" )\n"
" )\n"
" (else\n"
" (set! v0-0 (+ (+ (-> a0-3 0) -48) (the-as uint (shl v0-0 4))))\n"
" (let ((a1-23 (the-as uint v0-0))))\n"
" (set!\n"
" v0-0\n"
" (the-as int (+ (+ (-> a0-3 0) -48) (the-as uint (shl v0-0 4))))\n"
" )\n"
" (let ((a1-23 (the-as uint v0-0)))\n"
" )\n"
" )\n"
" )\n"
" )\n"
@@ -2410,14 +2422,16 @@ TEST_F(FormRegressionTest, ExprStringToInt) {
" )\n"
" )\n"
" ((or (= (-> a0-2 0) 98) (= (-> a0-2 0) 66))\n"
" (let\n"
" ((a0-4 (&-> a0-2 1)))\n"
" (let ((a0-4 (&-> a0-2 1)))\n"
" (while\n"
" (and\n"
" (>= (-> a0-4 0) (the-as uint 48))\n"
" (>= (the-as uint 49) (-> a0-4 0))\n"
" )\n"
" (set! v0-0 (+ (+ (-> a0-4 0) -48) (the-as uint (shl v0-0 1))))\n"
" (set!\n"
" v0-0\n"
" (the-as int (+ (+ (-> a0-4 0) -48) (the-as uint (shl v0-0 1))))\n"
" )\n"
" (set! a0-4 (&-> a0-4 1))\n"
" )\n"
" )\n"
@@ -2426,20 +2440,28 @@ TEST_F(FormRegressionTest, ExprStringToInt) {
" )\n"
" )\n"
" (else\n"
" (when\n"
" (= (-> a0-1 1) 45)\n"
" (when (= (-> a0-1 1) 45)\n"
" (set! v1-0 #t)\n"
" (set! a0-1 (&-> a0-1 1))\n"
" (let ((a1-47 a0-1)))\n"
" (let ((a1-47 a0-1))\n"
" )\n"
" )\n"
" (while\n"
" (and (>= (-> a0-1 0) (the-as uint 48)) (>= (the-as uint 57) (-> a0-1 0)))\n"
" (set! v0-0 (+ (+ (-> a0-1 0) -48) (the-as uint (* 10 v0-0))))\n"
" (set! v0-0 (the-as int (+ (+ (-> a0-1 0) -48) (the-as uint (* 10 v0-0)))))\n"
" (set! a0-1 (&-> a0-1 1))\n"
" )\n"
" )\n"
" )\n"
" (cond (v1-0 (- v0-0)) (else (empty) v0-0))\n"
" (cond\n"
" (v1-0\n"
" (- v0-0)\n"
" )\n"
" (else\n"
" (empty)\n"
" v0-0\n"
" )\n"
" )\n"
" )\n"
" )";
test_final_function(func, type, expected);