mirror of
https://github.com/enso-org/enso.git
synced 2024-12-24 19:03:27 +03:00
d59714a29d
This change allows for importing modules using a qualified name and deals with any conflicts on the way. Given a module C defined at `A/B/C.enso` with ``` type C type C a ``` it is now possible to import it as ``` import project.A ... val x = A.B.C 10 ``` Given a module located at `A/B/C/D.enso`, we will generate intermediate, synthetic, modules that only import and export the successor module along the path. For example, the contents of a synthetic module B will look like ``` import <namespace>.<pkg-name>.A.B.C export <namespace>.<pkg-name>.A.B.C ``` If module B is defined already by the developer, the compiler will _inject_ the above statements to the IR. Also removed the last elements of some lowercase name resolution that managed to survive recent changes (`Meta.Enso_Project` would now be ambiguous with `enso_project` method). Finally, added a pass that detects shadowing of the synthetic module by the type defined along the path. We print a warning in such a situation. Related to https://www.pivotaltracker.com/n/projects/2539304 # Important Notes There was an additional request to fix the annoying problem with `from` imports that would always bring the module into the scope. The changes in stdlib demonstrate how it is now possible to avoid the workaround of ``` from X.Y.Z as Z_Module import A, B ``` (i.e. `as Z_Module` part is almost always unnecessary). |
||
---|---|---|
.. | ||
bundles.md | ||
distribution.md | ||
fallback-launcher-release-infrastructure.md | ||
launcher-cli.md | ||
launcher.md | ||
licenses.md | ||
nightly.md | ||
packaging.md | ||
README.md | ||
release-policy.md | ||
standard-libraries.md |
layout | title | category | tags | order | ||
---|---|---|---|---|---|---|
section-summary | Enso Distribution | distribution |
|
0 |
Enso Distribution
Documents in this section deal with the process of packaging both Enso and its dependencies, and Enso projects for use by our users.
- Distribution: Information on how we distribute Enso to our users, and for use by the IDE.
- Packaging: Information on the structure of an Enso project/package.
- Release Policy: Information on the release policy for Enso and this repository.
- Launcher: Information on the design of Enso launcher, the tool for launching various components and managing Enso versions.
- Launcher CLI: Explanation of the command-line interface of the launcher.
- Licenses: Information on gathering license information of dependencies included in the distribution.
- Fallback Launcher Release Infrastructure: Explanation of the fallback infrastructure that can be enabled to keep launcher updates functioning even if the primary release provider stops working.
- Standard Libraries: A brief explanation of the standard libraries for Enso.
- Bundles An explanation of distributed bundles that contain all components necessary to run Enso out of the box.
- Nightly Description of the infrastructure related to the nightly builds.