Merged
Conversation
based on the observation in #74 (comment) I wrote a new use-before defined checker. Main differences to the old one (from #84): * It analyses a block as a whole, first gathering all analysis results on the subcomponents, and then analyzing them, instead of doing it as it traverses the declarations. * This makes it easier to specify and understand (see the comment above). * Because of this slightly different structure, I decided to move it out of `freevars.ml` into its own file. (Note: We are not using `freevars.ml` any more, besides in some assertions. The compiler uses `freevars_ir.ml`.) * This allows it to return a more precise analysis result in the case of a nested block, see test case `run/nested-eager.as`. Andreas noticed this deficiency of the old one, so hopefully this is nicer. * The few test cases that I wrote in #84 still go through. Yay!
Closed
dfinity-bot
added a commit
that referenced
this pull request
Jul 14, 2020
## Changelog for motoko-base: Branch: next-moc Commits: [caffeinelabs/motoko-base@d1d0e694...b0381a88](caffeinelabs/motoko-base@d1d0e69...b0381a8) * [`0631fe40`](caffeinelabs/motoko-base@0631fe4) Prepares open sourcing ([dfinity-lab/motoko-base#79](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/79)) * [`c1c116aa`](caffeinelabs/motoko-base@c1c116a) Sets up unit tests to use the `matchers` library ([dfinity-lab/motoko-base#106](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/106)) * [`8d074912`](caffeinelabs/motoko-base@8d07491) make conversions public; fix doc ([dfinity-lab/motoko-base#113](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/113)) * [`e78f49a4`](caffeinelabs/motoko-base@e78f49a) Public release: Remove old subdir of examples ([dfinity-lab/motoko-base#114](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/114)) * [`2c9d8286`](caffeinelabs/motoko-base@2c9d828) Small fix for open source ([dfinity-lab/motoko-base#115](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/115)) * [`0ca6c694`](caffeinelabs/motoko-base@0ca6c69) Adds filterMap for arrays ([dfinity-lab/motoko-base#101](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/101)) * [`754eb858`](caffeinelabs/motoko-base@754eb85) Readme: Fix vessel instructions ([dfinity-lab/motoko-base#116](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/116)) * [`ed4fcfb4`](caffeinelabs/motoko-base@ed4fcfb) adds note about requiring `vessel` to run the tests ([dfinity-lab/motoko-base#118](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/118)) * [`d04a0e21`](caffeinelabs/motoko-base@d04a0e2) Cleans up a few comments in List ([dfinity-lab/motoko-base#119](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/119)) * [`fd81ac57`](caffeinelabs/motoko-base@fd81ac5) Adds some documentation to the `HashMap` class. ([dfinity-lab/motoko-base#121](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/121)) * [`d0354489`](caffeinelabs/motoko-base@d035448) Remove WordN.toInt ([dfinity-lab/motoko-base#125](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/125))
mergify bot
pushed a commit
that referenced
this pull request
Jul 14, 2020
## Changelog for motoko-base: Branch: next-moc Commits: [caffeinelabs/motoko-base@d1d0e694...b0381a88](caffeinelabs/motoko-base@d1d0e69...b0381a8) * [`0631fe40`](caffeinelabs/motoko-base@0631fe4) Prepares open sourcing ([dfinity-lab/motoko-base#79](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/79)) * [`c1c116aa`](caffeinelabs/motoko-base@c1c116a) Sets up unit tests to use the `matchers` library ([dfinity-lab/motoko-base#106](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/106)) * [`8d074912`](caffeinelabs/motoko-base@8d07491) make conversions public; fix doc ([dfinity-lab/motoko-base#113](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/113)) * [`e78f49a4`](caffeinelabs/motoko-base@e78f49a) Public release: Remove old subdir of examples ([dfinity-lab/motoko-base#114](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/114)) * [`2c9d8286`](caffeinelabs/motoko-base@2c9d828) Small fix for open source ([dfinity-lab/motoko-base#115](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/115)) * [`0ca6c694`](caffeinelabs/motoko-base@0ca6c69) Adds filterMap for arrays ([dfinity-lab/motoko-base#101](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/101)) * [`754eb858`](caffeinelabs/motoko-base@754eb85) Readme: Fix vessel instructions ([dfinity-lab/motoko-base#116](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/116)) * [`ed4fcfb4`](caffeinelabs/motoko-base@ed4fcfb) adds note about requiring `vessel` to run the tests ([dfinity-lab/motoko-base#118](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/118)) * [`d04a0e21`](caffeinelabs/motoko-base@d04a0e2) Cleans up a few comments in List ([dfinity-lab/motoko-base#119](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/119)) * [`fd81ac57`](caffeinelabs/motoko-base@fd81ac5) Adds some documentation to the `HashMap` class. ([dfinity-lab/motoko-base#121](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/121)) * [`d0354489`](caffeinelabs/motoko-base@d035448) Remove WordN.toInt ([dfinity-lab/motoko-base#125](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity-lab/motoko-base/issues/125))
dfinity-bot
added a commit
that referenced
this pull request
Oct 28, 2020
## Changelog for candid: Branch: Commits: [dfinity/candid@a1dcbad4...3e3ad95a](dfinity/candid@a1dcbad...3e3ad95) * [`119703ba`](dfinity/candid@119703b) [Spec] Relax LEB128 decoding ([dfinity/candid#79](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/79)) * [`10f08432`](dfinity/candid@10f0843) Update prim.test.did * [`b2524816`](dfinity/candid@b252481) parser for test suite ([dfinity/candid#78](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/78)) * [`71bf6e76`](dfinity/candid@71bf6e7) release 0.5.2 ([dfinity/candid#80](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/80)) * [`b9f387e3`](dfinity/candid@b9f387e) test suite for JS ([dfinity/candid#81](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/81)) * [`9e5dc775`](dfinity/candid@9e5dc77) Release ([dfinity/candid#82](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/82)) * [`1df9d2d7`](dfinity/candid@1df9d2d) more candid test data ([dfinity/candid#83](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/83)) * [`9e4156d9`](dfinity/candid@9e4156d) fix newtype ([dfinity/candid#85](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/85)) * [`6880a430`](dfinity/candid@6880a43) display for types ([dfinity/candid#86](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/86)) * [`04b1b068`](dfinity/candid@04b1b06) release ([dfinity/candid#87](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/87)) * [`117c6436`](dfinity/candid@117c643) Refactor Lexer ([dfinity/candid#89](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/89)) * [`0a5789f9`](dfinity/candid@0a5789f) fix value pretty printer ([dfinity/candid#92](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/92)) * [`9f35a5aa`](dfinity/candid@9f35a5a) refactor error ([dfinity/candid#94](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/94)) * [`2e742927`](dfinity/candid@2e74292) Parse annvals in textual format ([dfinity/candid#93](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/93)) * [`0a144c79`](dfinity/candid@0a144c7) use principal from ic-types ([dfinity/candid#84](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/84)) * [`01412b14`](dfinity/candid@01412b1) release ([dfinity/candid#95](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/95)) * [`f540df54`](dfinity/candid@f540df5) release ([dfinity/candid#98](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/98)) * [`798675d8`](dfinity/candid@798675d) Add generic functions to encode/decode around a tuple ([dfinity/candid#99](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/99)) * [`0d26e568`](dfinity/candid@0d26e56) release ([dfinity/candid#100](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/100)) * [`191b6f1f`](dfinity/candid@191b6f1) Reset record_nesting_depth after each value ([dfinity/candid#101](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/101)) * [`8e7be65d`](dfinity/candid@8e7be65) fix record ([dfinity/candid#103](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/103)) * [`159533b2`](dfinity/candid@159533b) Update construct.test.did * [`a6ea0991`](dfinity/candid@a6ea099) add service initialization parameters ([dfinity/candid#88](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/88)) * [`3a1f56fa`](dfinity/candid@3a1f56f) refactor: sort dependencies and add traits for error types ([dfinity/candid#105](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/105)) * [`89df78ee`](dfinity/candid@89df78e) support service constructor ([dfinity/candid#106](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/106)) * [`738d5ed4`](dfinity/candid@738d5ed) fix for actor class codegen ([dfinity/candid#107](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/107)) * [`97ba7a0f`](dfinity/candid@97ba7a0) export init args in js ([dfinity/candid#108](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/108)) * [`d4e00adc`](dfinity/candid@d4e00ad) fix js init export ([dfinity/candid#109](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/109)) * [`c1662abe`](dfinity/candid@c1662ab) [spec] Reverse subtyping ([dfinity/candid#110](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/110)) * [`713595be`](dfinity/candid@713595b) The “reverse variant extension rule” is redundand ([dfinity/candid#113](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/113)) * [`79d49a01`](dfinity/candid@79d49a0) Spec: Opt decoding also from non-opt values ([dfinity/candid#114](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/114)) * [`2cfc0ecf`](dfinity/candid@2cfc0ec) improve pretty printing for values ([dfinity/candid#116](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/116)) * [`8fafe345`](dfinity/candid@8fafe34) Un-rename Soundness document ([dfinity/candid#115](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/115)) * [`8e6fc502`](dfinity/candid@8e6fc50) Bump spec version ([dfinity/candid#112](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/112)) * [`7cedebcb`](dfinity/candid@7cedebc) fix clippy ([dfinity/candid#117](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/117)) * [`a732a639`](dfinity/candid@a732a63) Candid UI Canister ([dfinity/candid#111](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/111)) * [`d97b271c`](dfinity/candid@d97b271) disable pretty printing for large vectors ([dfinity/candid#118](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/118)) * [`aceb7f92`](dfinity/candid@aceb7f9) derive candid type for functions ([dfinity/candid#119](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/119)) * [`c3dc0ad7`](dfinity/candid@c3dc0ad) rename derived code for CDK ([dfinity/candid#120](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/120)) * [`d1f8de7d`](dfinity/candid@d1f8de7) release ([dfinity/candid#121](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/121)) * [`3e3ad95a`](dfinity/candid@3e3ad95) remove multi-line string in test suites ([dfinity/candid#125](http://r.duckduckgo.com/l/?uddg=https://github.com/dfinity/candid/issues/125))
dfinity-bot
added a commit
that referenced
this pull request
Dec 7, 2022
## Changelog for ic-hs: Branch: master Commits: [dfinity/ic-hs@20e23e1a...eb2a79c5](dfinity/ic-hs@20e23e1...eb2a79c) * [`6d585bee`](dfinity/ic-hs@6d585be) update release.yml ([dfinity/ic-hs#116](https://github.com/dfinity/ic-hs/issues/116)) * [`4d2cfb42`](dfinity/ic-hs@4d2cfb4) fix reject code of installing on (non-)empty canister ([dfinity/ic-hs#117](https://github.com/dfinity/ic-hs/issues/117)) * [`eb2a79c5`](dfinity/ic-hs@eb2a79c) Bump candid to 0.4, to get new subtyping support ([dfinity/ic-hs#119](https://github.com/dfinity/ic-hs/issues/119))
dfinity-bot
added a commit
that referenced
this pull request
Dec 8, 2022
## Changelog for ic-hs: Branch: master Commits: [dfinity/ic-hs@20e23e1a...ece29f60](dfinity/ic-hs@20e23e1...ece29f6) * [`6d585bee`](dfinity/ic-hs@6d585be) update release.yml ([dfinity/ic-hs#116](https://github.com/dfinity/ic-hs/issues/116)) * [`4d2cfb42`](dfinity/ic-hs@4d2cfb4) fix reject code of installing on (non-)empty canister ([dfinity/ic-hs#117](https://github.com/dfinity/ic-hs/issues/117)) * [`eb2a79c5`](dfinity/ic-hs@eb2a79c) Bump candid to 0.4, to get new subtyping support ([dfinity/ic-hs#119](https://github.com/dfinity/ic-hs/issues/119)) * [`ece29f60`](dfinity/ic-hs@ece29f6) allow a canister to query its own status ([dfinity/ic-hs#121](https://github.com/dfinity/ic-hs/issues/121))
mergify bot
pushed a commit
that referenced
this pull request
Dec 8, 2022
## Changelog for ic-hs: Branch: master Commits: [dfinity/ic-hs@20e23e1a...ece29f60](dfinity/ic-hs@20e23e1...ece29f6) * [`6d585bee`](dfinity/ic-hs@6d585be) update release.yml ([dfinity/ic-hs#116](https://github.com/dfinity/ic-hs/issues/116)) * [`4d2cfb42`](dfinity/ic-hs@4d2cfb4) fix reject code of installing on (non-)empty canister ([dfinity/ic-hs#117](https://github.com/dfinity/ic-hs/issues/117)) * [`eb2a79c5`](dfinity/ic-hs@eb2a79c) Bump candid to 0.4, to get new subtyping support ([dfinity/ic-hs#119](https://github.com/dfinity/ic-hs/issues/119)) * [`ece29f60`](dfinity/ic-hs@ece29f6) allow a canister to query its own status ([dfinity/ic-hs#121](https://github.com/dfinity/ic-hs/issues/121))
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.
based on the observation in #74 (comment) I wrote a new use-before defined checker. Main differences to the old one (from #84):
freevars.mlinto its own file. (Note: We are not usingfreevars.mlany more, besides in some assertions. The compiler usesfreevars_ir.ml.)run/nested-eager.as. Andreas noticed this deficiency of the old one, so hopefully this is nicer.