Complete generic specialization, variance checks and effect propagation - #237
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TL;DR
Complete explicit generic calls and specialization in both flavors, preserve generic callback/effect contracts, and report provably redundant type annotations.
Details
What Was Added
identity<int>(5)/identity<int> 5), AST/parser support, per-call substitutions and generic field/callable constraints.What Was Changed/Deleted
handle … dospelling.make setup.Spec/Doc Changes: Update syntax, type, call, effect, ML, concurrency and builtin contracts; document exact leaves under variance, annotation-warning semantics, storage injection and plan 0015's validation results.
Breaking Changes: Yes for compiler Rust API consumers:
Expr::TypeApplyadds an enum variant, andDocComment::summary_only/osprey_syntax::dependency_setsare removed in favor ofDocComment::new/dependency_report. CLI warnings add stderr output without changing exit status; invalid generic applications and unhandled callback effects are rejected.Related: #160, #201, #227.
How Do The Automated Tests Prove It Works?
a_written_type_argument_pins_an_instantiation_end_to_endandthe_ml_written_type_argument_prints_the_same_bytesexercise both surfaces; arity/contradiction fixtures pin rejection diagnostics.the_three_markers_agree_on_every_assignment_outcomepins exact constructor leaves.higher_order_invocation_retains_named_and_curried_arguments,named_function_value_calls_bind_written_slots_before_callback_substitutionandescaped_closures_capture_values_but_never_active_handler_bindingscover effect transport and handler escape.the_reported_set_is_deletable_as_a_whole_not_only_one_at_a_timeverifies joint annotation removal. CLI/LSP tests pin warning text, severity, source ownership and ranges.make cipasses: 1,563 Rust tests, all nine configured Rust coverage gates, 24 C suites/29 coverage gates, 213 native goldens plus 18 alternate GPU checks per allocator, zero ARC leaks, 316 extension tests and 17 bank browser tests. Types coverage is 10028/10231 lines against 98%; pinned Deslop is 4.2% against 5%.