fspl/generator/union_test.go

48 lines
1.0 KiB
Go

package generator
import "testing"
func TestAssignmentUnion (test *testing.T) {
testString (test,
`%"0zNZN147MN2wzMAQ6NS2dQ==::U" = type { i64, i64 }
define void @"0zNZN147MN2wzMAQ6NS2dQ==::main"() {
0:
%1 = alloca double
store double 0x401ECCCCCCCCCCCD, ptr %1
%2 = alloca %"0zNZN147MN2wzMAQ6NS2dQ==::U"
%3 = getelementptr %"0zNZN147MN2wzMAQ6NS2dQ==::U", ptr %2, i32 0, i32 0
%4 = getelementptr %"0zNZN147MN2wzMAQ6NS2dQ==::U", ptr %2, i32 0, i32 1
store i64 9186060094042213285, ptr %3
%5 = load double, ptr %1
store double %5, ptr %4
ret void
}
`,
`
U: (| Int F64)
[main] = {
x:F64 = 7.7
y:U = x
}
`)}
func TestAssignmentUnionToUnion (test *testing.T) {
testString (test,
`%"0zNZN147MN2wzMAQ6NS2dQ==::U" = type { i64, i64 }
define void @"0zNZN147MN2wzMAQ6NS2dQ==::main"() {
0:
%1 = alloca %"0zNZN147MN2wzMAQ6NS2dQ==::U"
%2 = alloca %"0zNZN147MN2wzMAQ6NS2dQ==::U"
%3 = load %"0zNZN147MN2wzMAQ6NS2dQ==::U", ptr %2
store %"0zNZN147MN2wzMAQ6NS2dQ==::U" %3, ptr %1
ret void
}
`,
`
U: (| Int F64)
[main] = {
x:U y:U
x = y
}
`)}