Skip to content

Change array syntax and fix propagation of mutability#112

Merged
rossberg merged 10 commits intomasterfrom
var-array
Dec 10, 2018
Merged

Change array syntax and fix propagation of mutability#112
rossberg merged 10 commits intomasterfrom
var-array

Conversation

@rossberg
Copy link
Contributor

  • Require var keyword for mutable array literals (again): [var 1, 2, 3].
  • Change array type syntax from postfix to mixfix: [Nat], [var Int].
  • Don't allow mutability for arrays or object fields to be modified by mere type annotations.
  • Fix coverage.as test, which apparently got broken at some point.

This fixes #92.

@rossberg rossberg requested a review from crusso December 10, 2018 15:27
@rossberg rossberg force-pushed the var-array branch 3 times, most recently from 9f4e025 to 949909b Compare December 10, 2018 15:34
Copy link
Contributor

@nomeata nomeata left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, thanks! (And I guess there is an implicit message of “Do not use multi-line comments”?)

@nomeata
Copy link
Contributor

nomeata commented Dec 10, 2018

Actually, I get this now when building:

File "parser.mly", line 164, characters 8-11:
Warning: symbol var is unreachable from any of the start symbol(s).

Do you know what that means?

Not sure why they were emptied, but not deleted in
6c7e9f7. The test suite should delete
empty files.
@nomeata
Copy link
Contributor

nomeata commented Dec 10, 2018

I took the liberty of pushing commits fixing the test suite and the samples directory onto the branch.

@nomeata
Copy link
Contributor

nomeata commented Dec 10, 2018

…and a fix to the parser (removing an unused symbol).

@rossberg
Copy link
Contributor Author

Ah, thanks for the fixes!

@rossberg rossberg merged commit 7677544 into master Dec 10, 2018
@rossberg rossberg deleted the var-array branch December 10, 2018 17:56
};

let a : var Int[] = [8, 3, 9, 5, 2];
let a : [var Int] = [var 8, 3, 9, 5, 2];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the var on the right hand side optional or required here?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Based on some other examples I'm assuming it's required.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering if var could be omitted on values if it can be inferred from the type.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It could, by I removed that intentionally for both arrays and objects (see 3rd bullet of the PR description). The idea is that type annotations should only disambiguate, not change operational behaviour.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The idea is that type annotations should only disambiguate, not change operational behaviour.

Ah yes, this came up in #31 (comment). Thanks for the reminder.

mergify bot pushed a commit that referenced this pull request Jul 16, 2020
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 2, 2022
## Changelog for ic-hs:
Branch: master
Commits: [dfinity/ic-hs@0f87c270...20e23e1a](dfinity/ic-hs@0f87c27...20e23e1)

* [`8c2207ee`](dfinity/ic-hs@8c2207e) query balance and balance128 within the same query ([dfinity/ic-hs⁠#106](https://github.com/dfinity/ic-hs/issues/106))
* [`5a076ad1`](dfinity/ic-hs@5a076ad) rename canister state counter to canister version ([dfinity/ic-hs⁠#109](https://github.com/dfinity/ic-hs/issues/109))
* [`d095478b`](dfinity/ic-hs@d095478) Include ic-ref-test and universal canister in release build artifacts ([dfinity/ic-hs⁠#111](https://github.com/dfinity/ic-hs/issues/111))
* [`3a58e164`](dfinity/ic-hs@3a58e16) Add canister global timer ([dfinity/ic-hs⁠#107](https://github.com/dfinity/ic-hs/issues/107))
* [`c863b6ef`](dfinity/ic-hs@c863b6e) fix provisional top up test ([dfinity/ic-hs⁠#112](https://github.com/dfinity/ic-hs/issues/112))
* [`2cd76efb`](dfinity/ic-hs@2cd76ef) run system tasks periodically ([dfinity/ic-hs⁠#113](https://github.com/dfinity/ic-hs/issues/113))
* [`3c2eb69a`](dfinity/ic-hs@3c2eb69) narrow down gap for canister http_requests between ic-ref(-test) and Interface Spec ([dfinity/ic-hs⁠#100](https://github.com/dfinity/ic-hs/issues/100))
* [`fb76b646`](dfinity/ic-hs@fb76b64) ic-ref-run: Execute heartbeats before any submitted message ([dfinity/ic-hs⁠#114](https://github.com/dfinity/ic-hs/issues/114))
* [`20e23e1a`](dfinity/ic-hs@20e23e1) do not return an HTTP error for calls to stopping/stopped canisters ([dfinity/ic-hs⁠#115](https://github.com/dfinity/ic-hs/issues/115))
mergify bot pushed a commit that referenced this pull request Dec 6, 2022
## Changelog for ic-hs:
Branch: master
Commits: [dfinity/ic-hs@0f87c270...20e23e1a](dfinity/ic-hs@0f87c27...20e23e1)

* [`8c2207ee`](dfinity/ic-hs@8c2207e) query balance and balance128 within the same query ([dfinity/ic-hs⁠#106](https://github.com/dfinity/ic-hs/issues/106))
* [`5a076ad1`](dfinity/ic-hs@5a076ad) rename canister state counter to canister version ([dfinity/ic-hs⁠#109](https://github.com/dfinity/ic-hs/issues/109))
* [`d095478b`](dfinity/ic-hs@d095478) Include ic-ref-test and universal canister in release build artifacts ([dfinity/ic-hs⁠#111](https://github.com/dfinity/ic-hs/issues/111))
* [`3a58e164`](dfinity/ic-hs@3a58e16) Add canister global timer ([dfinity/ic-hs⁠#107](https://github.com/dfinity/ic-hs/issues/107))
* [`c863b6ef`](dfinity/ic-hs@c863b6e) fix provisional top up test ([dfinity/ic-hs⁠#112](https://github.com/dfinity/ic-hs/issues/112))
* [`2cd76efb`](dfinity/ic-hs@2cd76ef) run system tasks periodically ([dfinity/ic-hs⁠#113](https://github.com/dfinity/ic-hs/issues/113))
* [`3c2eb69a`](dfinity/ic-hs@3c2eb69) narrow down gap for canister http_requests between ic-ref(-test) and Interface Spec ([dfinity/ic-hs⁠#100](https://github.com/dfinity/ic-hs/issues/100))
* [`fb76b646`](dfinity/ic-hs@fb76b64) ic-ref-run: Execute heartbeats before any submitted message ([dfinity/ic-hs⁠#114](https://github.com/dfinity/ic-hs/issues/114))
* [`20e23e1a`](dfinity/ic-hs@20e23e1) do not return an HTTP error for calls to stopping/stopped canisters ([dfinity/ic-hs⁠#115](https://github.com/dfinity/ic-hs/issues/115))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Nested mutable expression fails in interpreter

3 participants