Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Labeled Tuples #1235

Draft
wants to merge 120 commits into
base: dev
Choose a base branch
from

Fix cursor inspector message

bd36673
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
Draft

Implement Labeled Tuples #1235

Fix cursor inspector message
bd36673
Select commit
Loading
Failed to load commit list.
GitHub Actions / Test Report succeeded Dec 10, 2024 in 0s

129 passed, 0 failed and 0 skipped

Tests passed successfully

✅ 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