-
Notifications
You must be signed in to change notification settings - Fork 25
Relaxed method resolution, based on sizes #271
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
Merged
Merged
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
43b8e7e
Relaxed method resolution, based on sizes
ppolesiuk 93b6df6
Merge branch 'master' into sized-method-resolve
ppolesiuk 077a8c2
Parameter cycle detection as a separate module
ppolesiuk 6068458
Renaming test
ppolesiuk 6ba1898
Merge branch 'master' into sized-method-resolve
ppolesiuk File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| (* This file is part of DBL, released under MIT license. | ||
| * See LICENSE for details. | ||
| *) | ||
|
|
||
| (** Detection of cycles in named parameter resolution. *) | ||
|
|
||
| type t = int Var.Map.t | ||
|
|
||
| let empty = Var.Map.empty | ||
|
|
||
| let add_var pcyc ?(size=0) x = | ||
| match Var.Map.find_opt x pcyc with | ||
| | None -> Some (Var.Map.add x size pcyc) | ||
| | Some old_size when size < old_size -> | ||
| Some (Var.Map.add x size pcyc) | ||
| | Some _ -> | ||
| None |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| (* This file is part of DBL, released under MIT license. | ||
| * See LICENSE for details. | ||
| *) | ||
|
|
||
| (** Detection of cycles in named parameter resolution. *) | ||
|
|
||
| (** Data structure used to detect cycles. *) | ||
| type t | ||
|
|
||
| (** Empty cycle detection structure. *) | ||
| val empty : t | ||
|
|
||
| (** Check for cyclic dependencies in named parameters, and update the state | ||
| of the cycle detector. Returns [None] if a cycle is detected, or | ||
| [Some new_state] otherwise. The [size] parameter is used to allow multiple | ||
| usages of the same parameter, as long as the consecutive usages have | ||
| decreasing sizes. If the size is not provided, it defaults to 0. *) | ||
| val add_var : t -> ?size:int -> Var.t -> t option |
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| data B X = B of X | ||
| data P X Y = P of X, Y | ||
|
|
||
| data rec Shape = | ||
| | SU | ||
| | SB of Shape | ||
| | SP of Shape, Shape | ||
|
|
||
| method shape () = SU | ||
| method shape {X, method shape : X -> Shape} (B (x : X)) = | ||
| SB x.shape | ||
| method shape | ||
| { X, Y | ||
| , method shape : X -> Shape | ||
| , method shape : Y -> Shape | ||
| } (P (x : X) (y : Y)) = | ||
| SP x.shape y.shape | ||
|
|
||
| let _ = | ||
| (P (P (P (B (B ())) (B (P () ()))) (B (P () (B (P () ()))))) ()).shape |
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.
Uh oh!
There was an error while loading. Please reload this page.