예제 #1
0
 def test_type_variables_complex(self):
     r1 = types.Record()
     r1.add_field("foo")
     r1.add_field("bar")
     r2 = types.Record()
     r2.add_field("baz")
     function = types.Function.for_multiple_inputs(
         [r1, r2], types.UnconstrainedType())
     self.assertEqual(
         function.as_signature(codegen.Module()),
         "{ a | bar : b, foo : c } -> { d | baz : e } -> f",
     )
예제 #2
0
 def test_record_update(self):
     rec = types.Record()
     rec.add_field("name", dtypes.String)
     rec.add_field("age", dtypes.Number)
     rec.add_field("height", dtypes.Number)
     scope = codegen.Scope()
     tmp = scope.reserve_name("tmp", type=rec)
     var = scope.variables[tmp]
     update = codegen.RecordUpdate(var,
                                   name=codegen.String("Fred"),
                                   age=codegen.Number(34))
     self.assertCodeEqual(
         update.as_source_code(),
         """
         { tmp | age = 34, name = "Fred" }
     """,
     )
예제 #3
0
 def test_one_field_record_signature(self):
     r = types.Record()
     r.add_field("foo", type_obj=dtypes.String)
     self.assertEqual(r.as_signature(codegen.Module()),
                      "{ a | foo : String }")
예제 #4
0
 def test_empty_record_signature_in_function(self):
     function = types.Function(types.Record(), types.UnconstrainedType())
     self.assertEqual(function.as_signature(codegen.Module()), "a -> b")
예제 #5
0
 def test_empty_record_signature(self):
     self.assertEqual(types.Record().as_signature(codegen.Module()), "a")
예제 #6
0
 def test_one_field_fixed_record_signature(self):
     r = types.Record(foo=dtypes.String)
     self.assertEqual(r.as_signature(codegen.Module()), "{ foo : String }")