Implement Labeled Tuples #1235
Draft
Implement Labeled Tuples #1235
GitHub Actions / Test Report
succeeded
Dec 10, 2024 in 0s
129 passed, 0 failed and 0 skipped
✅ junit_tests.xml
129 tests were completed in 0ms with 129 passed, 0 failed and 0 skipped.
Test suite | Passed | Failed | Skipped | Time |
---|---|---|---|---|
HazelTests | 129✅ | 0ms |
✅ HazelTests
HazelTests.MakeTerm
✅ Singleton Labled Tuple ascription in let
✅ Assigning labeled tuple to variable
✅ Multiple labels in tuple
✅ Integer Literal
✅ Empty Hole
✅ Free Variable
✅ Parenthesized Expression
✅ Let Expression
✅ Function Application
✅ Named Function Definition
✅ Incomplete Function Definition
✅ Constructor
✅ Type Alias
HazelTests.LabeledTuple
✅ Singleton unlabeled
✅ Singleton labeled
✅ unlabeled remains same order
✅ fully labeled retains ordering
✅ Missing labels get added
✅ Present labels get reordered
✅ Partial labels get reordered
✅ Extra labels get reordered
✅ pair labeled, unlabled
✅ Independent label sets with some overlap
HazelTests.Statics
✅ Function with unknown param
✅ Function with known param
✅ Function with labeled param
✅ bifunction
✅ bifunction
✅ Typechecking fails for unlabeled variable being assigned to labeled tuple
✅ Typechecking fails for unlabeled variable being assigned to labeled tuple
✅ Assigning labeled tuple to variable
✅ Singleton Labled Tuple ascription in let
✅ Singleton Labled Tuple ascription in let with wrong type should fail
✅ Singleton Labled Tuple with specified label
✅ Labeled tuple with multiple labels
✅ Let statement that adds labels during elaboration
✅ Duplicate singleton labels
✅ Reconstructed labeled tuple without values
✅ Singleton labeled argument let with unknown type
✅ nested different singleton labeled arguments
✅ nested different singleton labeled arguments
✅ Singleton labeled argument function application with unknown type
✅ Singleton labeled argument function application with no labeled param
✅ Singleton labeled argument not labeled in pattern
HazelTests.Elaboration
✅ Single integer
✅ Empty hole
✅ Free variable
✅ Let expression
✅ Inconsistent binary operation
✅ Consistent if statement
✅ An unapplied function
✅ Application of function on free variable
✅ Inconsistent case statement
✅ Let expression for a function
✅ Function application with a deferred argument
✅ Labeled tuple elaboration
✅ Rearranged labeled tuple
✅ Singleton labeled tuple adds labels
✅ Singleton labeled tuple
✅ Singleton labeld tuple analysis adds label
✅ Singleton labeld tuple analysis adds label with type alias
✅ Singleton labeld tuple analysis adds label with type alias
✅ Singleton labeled argument function application with known type
✅ Singleton labeled argument function application with no label in ap
✅ Failed cast inside labeled tuple
✅ nested different singleton labeled arguments
✅ Singleton labeled argument function application with unknown type
✅ Singleton labeled argument let with unknown type
✅ Function application with a single remaining argument after deferral
✅ Function application with a deferral of a hole
HazelTests.Evaluator
✅ Integer literal
✅ Integer sum
✅ Labeled tuple projection
✅ Function application
✅ Function deferral
✅ Deferral applied to hole
✅ Elaborated Pattern for labeled tuple
HazelTests.ListUtil
✅ rev_if with false
✅ rev_if with true
✅ dedup
✅ dedup_f
✅ group_by with constant function preserves list
✅ group_by groups into evens/odds
✅ range generates sequential integers [1,6)
✅ range defaults lower bound to 0
✅ range lo = hi is empty
✅ Invalid range raises error
✅ mk_frame creates a frame from the beginning
✅ mk_frame creates a frame from the end
✅ mk_frame raises when making a frame past the end
✅ mk_frame raises when making a frame before the beginning
✅ mk_frame makes a frame splitting the list
✅ mk_frame makes a frame splitting the list
✅ split with no found element returns the original list
✅ split with first found returns the head and tail
✅ splits on the middle element
✅ combine_opt
✅ is_empty with empty list
✅ is_empty with non-empty list
✅ flat_map with empty list
✅ flat_map with non-empty list
✅ flat_map with non-empty list and empty result
✅ join with empty list
✅ join with single element list
✅ join with multiple element list
✅ hd_opt with empty list
✅ hd_opt with non-empty list
✅ nth_opt with empty list
✅ nth_opt with non-empty list
✅ nth_opt with out of bounds index
✅ split_n_opt with empty list
✅ split_n_opt with non-empty list
✅ split_n_opt with out of bounds index
✅ split_n_opt with zero index
✅ split_n with empty list
✅ split_n with non-empty list
✅ split_n with out of bounds index
✅ split_n with zero index
✅ split_sublist_opt with empty list
✅ split_sublist_opt with non-empty list
✅ split_sublist_opt with out of bounds index
✅ split_sublist_opt with zero index
✅ split_sublist with empty list
✅ split_sublist with non-empty list
✅ split_sublist with out of bounds index
✅ split_sublist with zero index
✅ sublist with empty list
✅ sublist with non-empty list
✅ sublist with out of bounds index
Loading