Skip to content

update export.md: duplicate changes from dotty repo #2162

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 1 commit into from
Aug 23, 2021
Merged
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: 5 additions & 1 deletion _scala3-reference/other-new-features/export.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,10 @@ of one of the following forms:
- A _given selector_ `given x` has an optional type bound `x`. It creates aliases for all eligible given instances that conform to either `x`, or `Any` if `x` is omitted, except for members that are named by a previous simple, renaming, or omitting selector.
- A _wildcard selector_ `*` creates aliases for all eligible members of `path` except for given instances,
synthetic members generated by the compiler and those members that are named by a previous simple, renaming, or omitting selector.
\
Notes:
- eligible construtor proxies are also included, even though they are synthetic members.
- members created by an export are also included. They are created by the compiler, but are not considered synthetic.

A member is _eligible_ if all of the following holds:

Expand All @@ -76,7 +80,7 @@ A member is _eligible_ if all of the following holds:
It is a compile-time error if a simple or renaming selector does not identify any eligible members.

Type members are aliased by type definitions, and term members are aliased by method definitions. Export aliases copy the type and value parameters of the members they refer to.
Export aliases are always `final`. Aliases of given instances are again defined as givens (and aliases of old-style implicits are `implicit`). Aliases of inline methods or values are again defined `inline`. There are no other modifiers that can be given to an alias. This has the following consequences for overriding:
Export aliases are always `final`. Aliases of given instances are again defined as givens (and aliases of old-style implicits are `implicit`). Aliases of extensions are again defined as extensions. Aliases of inline methods or values are again defined `inline`. There are no other modifiers that can be given to an alias. This has the following consequences for overriding:

- Export aliases cannot be overridden, since they are final.
- Export aliases cannot override concrete members in base classes, since they are
Expand Down