Skip to content

[spec/expression] Improve AssignExpression docs for arrays #4236

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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions spec/arrays.dd
Original file line number Diff line number Diff line change
Expand Up @@ -418,12 +418,12 @@ assert(s == [2, 3, 3, 4]);
)


$(H2 $(LNAME2 array-setting, Array Setting))
$(H2 $(LNAME2 array-setting, Array Filling))

$(P If a slice operator appears as the left-hand side of an assignment
expression, and the type of the right-hand side is the same as the
element type of the left-hand side, then the array contents of the
left-hand side are set to the right-hand side.
element type of the left-hand side, then each element of the slice
expression will be assigned to the value on the right-hand side.
Copy link
Contributor Author

Choose a reason for hiding this comment

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

BTW, 'slice expression' is much easier to talk about than a SliceOperation (#3680), as the latter is awkward and not an expression. I prefer it before when we had SliceExpression, which is more natural and consistent with the other docs.

)

$(SPEC_RUNNABLE_EXAMPLE_RUN
Expand Down
8 changes: 6 additions & 2 deletions spec/expression.dd
Original file line number Diff line number Diff line change
Expand Up @@ -384,9 +384,13 @@ $(H3 $(LNAME2 simple_assignment_expressions, Simple Assignment Expression))
as described in $(DDSUBLINK spec/arrays, resize, Setting Dynamic Array Length).
)

$(LI If the lvalue is a static array or a slice, the behavior is as
$(LI If the left operand is a slice expression, the behavior is as
described in $(DDSUBLINK spec/arrays, array-copying, Array Copying) and
$(DDSUBLINK spec/arrays, array-setting, Array Setting).
$(DDSUBLINK spec/arrays, array-setting, Array Filling).
)

$(LI If the lvalue is an array, the behavior is as described in
$(DDSUBLINK spec/arrays, assignment, Array Assignment).
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Note that link covers static array copying.

)

$(LI If the lvalue is a user-defined property, the behavior is as
Expand Down