-
Notifications
You must be signed in to change notification settings - Fork 52
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Closes #2429 This pr introduces two enchancements to import statements: 1. They can have `using/hiding` list of symbols, with a behaviour analogous to the open statement. 2. They can be public. When an import is marked as public, a local module (or a series of nested local modules) is generated like this: ``` import A public; -- equivalent to import A; module A; open A public; end; ``` It is easier to understand when there is an alias. ``` import A as X.Y public; -- equivalent to import A; module X; module Y; open A public; end; end; ``` Public imports are allowed to be combined with `using/hiding` modifier and open statements with the expected behaviour.
- Loading branch information
1 parent
1410b63
commit e43797f
Showing
21 changed files
with
593 additions
and
335 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
module Juvix.Compiler.Concrete.Data.IsOpenShort where | ||
|
||
import Juvix.Prelude | ||
|
||
data IsOpenShort | ||
= OpenFull | ||
| OpenShort | ||
deriving stock (Eq, Ord, Show, Generic, Data, Enum, Bounded) | ||
|
||
$(genSingletons [''IsOpenShort]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
module Juvix.Compiler.Concrete.Data.LocalModuleOrigin where | ||
|
||
import Juvix.Prelude | ||
|
||
data LocalModuleOrigin | ||
= -- | The local module was in the source code | ||
LocalModuleSource | ||
| -- | The local module was inserted because of a type definition | ||
LocalModuleType | ||
| -- | The local module was inserted because of a public import | ||
LocalModulePublicImport | ||
deriving stock (Eq, Ord, Show, Generic, Data, Enum, Bounded) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.