mirror of
https://github.com/unisonweb/unison.git
synced 2024-09-11 02:25:39 +03:00
This is for consistency with the `cmark` style. Now the blocks we still pretty-print ourselves will match the bulk of them that `cmark` produces.
3.0 KiB
3.0 KiB
Adds and updates
Let's set up some definitions to start:
x = 1
y = 2
structural type X = One Nat
structural type Y = Two Nat Nat
Loading changes detected in scratch.u.
I found and typechecked these definitions in scratch.u. If you
do an `add` or `update`, here's how your codebase would
change:
⍟ These new definitions are ok to `add`:
structural type X
structural type Y
x : Nat
y : Nat
Expected: x
and y
, X
, and Y
exist as above. UCM tells you this.
scratch/main> add
⍟ I've added these definitions:
structural type X
structural type Y
x : Nat
y : Nat
Let's add an alias for 1
and One
:
z = 1
structural type Z = One Nat
Loading changes detected in scratch.u.
I found and typechecked these definitions in scratch.u. If you
do an `add` or `update`, here's how your codebase would
change:
⍟ These new definitions are ok to `add`:
structural type Z
(also named X)
z : Nat
(also named x)
Expected: z
is now 1
. UCM tells you that this definition is also called x
.
Also, Z
is an alias for X
.
scratch/main> add
⍟ I've added these definitions:
structural type Z
(also named X)
z : Nat
(also named x)
Let's update something that has an alias (to a value that doesn't have a name already):
x = 3
structural type X = Three Nat Nat Nat
Loading changes detected in scratch.u.
I found and typechecked these definitions in scratch.u. If you
do an `add` or `update`, here's how your codebase would
change:
⍟ These names already exist. You can `update` them to your
new definition:
structural type X
(The old definition is also named Z.)
x : Nat
(The old definition is also named z.)
Expected: x
is now 3
and X
has constructor Three
. UCM tells you the old definitions were also called z
and Z
and these names have also been updated.
scratch/main> update
Okay, I'm searching the branch for code that needs to be
updated...
That's done. Now I'm making sure everything typechecks...
Everything typechecks, so I'm saving the results...
Done.
Update it to something that already exists with a different name:
x = 2
structural type X = Two Nat Nat
Loading changes detected in scratch.u.
I found and typechecked these definitions in scratch.u. If you
do an `add` or `update`, here's how your codebase would
change:
⍟ These names already exist. You can `update` them to your
new definition:
structural type X
(also named Y)
x : Nat
(also named y)
Expected: x
is now 2
and X
is Two
. UCM says the old definition was also named z/Z
, and was also updated. And it says the new definition is also named y/Y
.
scratch/main> update
Okay, I'm searching the branch for code that needs to be
updated...
Done.