Skip to content
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

Migrate old named application syntax #2876

Merged
merged 32 commits into from
Jul 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
29f597c
refactor effects works
janmasrovira Jul 10, 2024
789fdc2
scoped NamedArgumentAssign
janmasrovira Jul 10, 2024
e7c4fc8
working scoping for old NamedArgumentAssign
janmasrovira Jul 10, 2024
c770372
remove NamedArgumentRegular
janmasrovira Jul 10, 2024
381d4ac
migrate
janmasrovira Jul 10, 2024
58bb484
migrate test
janmasrovira Jul 10, 2024
1f0c45c
see what tests fail
janmasrovira Jul 10, 2024
c24d1df
format
janmasrovira Jul 10, 2024
54a7708
format Package.juvix files
janmasrovira Jul 10, 2024
e07008f
migrate all syntax
janmasrovira Jul 10, 2024
5352f9c
stdlib
janmasrovira Jul 10, 2024
4d59835
Merge branch 'main' into 2668-remove-old-named-application-syntax
janmasrovira Jul 10, 2024
68d5d4e
remove obsolete comment
janmasrovira Jul 10, 2024
0d4787a
update package description
janmasrovira Jul 10, 2024
eb32290
format Compilation/positive
janmasrovira Jul 10, 2024
dee802f
fixing tests
janmasrovira Jul 10, 2024
a7db021
comment out Church numerals
janmasrovira Jul 10, 2024
73ad4cf
migrate ape
janmasrovira Jul 10, 2024
8ef87cb
strict
janmasrovira Jul 10, 2024
f99696b
migrate failing tests
janmasrovira Jul 10, 2024
328f776
Merge branch 'main' into 2668-remove-old-named-application-syntax
janmasrovira Jul 10, 2024
ac69aec
fix more tests
janmasrovira Jul 11, 2024
aafe053
format and better error in test suite
janmasrovira Jul 11, 2024
9f8fe1f
fix more tests
janmasrovira Jul 11, 2024
c154778
add genericConstructorName
janmasrovira Jul 11, 2024
e0c4d01
improve error message in scoping negative tests. Fix more tests
janmasrovira Jul 11, 2024
902786f
Merge branch 'main' into 2668-remove-old-named-application-syntax
janmasrovira Jul 11, 2024
b2b2ed2
restore compatibility with old syntax
janmasrovira Jul 11, 2024
23e258d
do not change stdlib
janmasrovira Jul 12, 2024
edf020a
manually fix formatting
janmasrovira Jul 12, 2024
c9e0f13
Merge branch 'main' into 2668-remove-old-named-application-syntax
janmasrovira Jul 12, 2024
6d10d7f
Merge branch 'main' into 2668-remove-old-named-application-syntax
janmasrovira Jul 12, 2024
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: 4 additions & 2 deletions examples/demo/Package.juvix
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@ module Package;
import PackageDescription.V2 open;

package : Package :=
defaultPackage
{name := "Demo"; version := mkVersion 0 1 0};
defaultPackage@?{
name := "Demo";
version := mkVersion 0 1 0
};
6 changes: 4 additions & 2 deletions examples/midsquare/Package.juvix
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@ module Package;
import PackageDescription.V2 open;

package : Package :=
defaultPackage
{name := "midsquare"; version := mkVersion 0 1 0};
defaultPackage@?{
name := "midsquare";
version := mkVersion 0 1 0
};
5 changes: 4 additions & 1 deletion examples/milestone/Bank/Package.juvix
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,7 @@ module Package;

import PackageDescription.V2 open;

package : Package := defaultPackage {name := "bank"};
package : Package :=
defaultPackage@?{
name := "bank"
};
9 changes: 5 additions & 4 deletions examples/milestone/Collatz/Package.juvix
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ module Package;
import PackageDescription.V2 open;

package : Package :=
defaultPackage
{name := "Collatz";
version := mkVersion 0 1 0;
main := just "Collatz.juvix"};
defaultPackage@?{
name := "Collatz";
version := mkVersion 0 1 0;
main := just "Collatz.juvix"
};
9 changes: 5 additions & 4 deletions examples/milestone/Fibonacci/Package.juvix
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ module Package;
import PackageDescription.V2 open;

package : Package :=
defaultPackage
{name := "Fibonacci";
version := mkVersion 0 1 0;
main := just "Fibonacci.juvix"};
defaultPackage@?{
name := "Fibonacci";
version := mkVersion 0 1 0;
main := just "Fibonacci.juvix"
};
9 changes: 5 additions & 4 deletions examples/milestone/Hanoi/Package.juvix
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ module Package;
import PackageDescription.V2 open;

package : Package :=
defaultPackage
{name := "Hanoi";
version := mkVersion 0 1 0;
main := just "Hanoi.juvix"};
defaultPackage@?{
name := "Hanoi";
version := mkVersion 0 1 0;
main := just "Hanoi.juvix"
};
9 changes: 5 additions & 4 deletions examples/milestone/HelloWorld/Package.juvix
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ module Package;
import PackageDescription.V2 open;

package : Package :=
defaultPackage
{name := "HelloWorld";
version := mkVersion 0 1 0;
main := just "HelloWorld.juvix"};
defaultPackage@?{
name := "HelloWorld";
version := mkVersion 0 1 0;
main := just "HelloWorld.juvix"
};
9 changes: 5 additions & 4 deletions examples/milestone/PascalsTriangle/Package.juvix
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ module Package;
import PackageDescription.V2 open;

package : Package :=
defaultPackage
{name := "PascalsTriangle";
version := mkVersion 0 1 0;
main := just "PascalsTriangle.juvix"};
defaultPackage@?{
name := "PascalsTriangle";
version := mkVersion 0 1 0;
main := just "PascalsTriangle.juvix"
};
9 changes: 5 additions & 4 deletions examples/milestone/TicTacToe/Package.juvix
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ module Package;
import PackageDescription.V2 open;

package : Package :=
defaultPackage
{name := "TicTacToe";
version := mkVersion 0 1 0;
main := just "CLI/TicTacToe.juvix"};
defaultPackage@?{
name := "TicTacToe";
version := mkVersion 0 1 0;
main := just "CLI/TicTacToe.juvix"
};
6 changes: 4 additions & 2 deletions examples/milestone/Tutorial/Package.juvix
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@ module Package;
import PackageDescription.V2 open;

package : Package :=
defaultPackage
{name := "Tutorial"; version := mkVersion 0 1 0};
defaultPackage@?{
name := "Tutorial";
version := mkVersion 0 1 0
};
28 changes: 17 additions & 11 deletions include/package/PackageDescription/V1.juvix
Original file line number Diff line number Diff line change
Expand Up @@ -44,22 +44,28 @@ type Dependency :=
defaultStdlib;

--- Construct a ;Package; with useful default arguments.
defaultPackage {name : String := "my-project"} {version : SemVer := defaultVersion} {dependencies : List
Dependency := [defaultStdlib]} {main : Maybe
String := nothing} {buildDir : Maybe String := nothing}
defaultPackage
{name : String := "my-project"}
{version : SemVer := defaultVersion}
{dependencies : List Dependency := [defaultStdlib]}
{main : Maybe String := nothing}
{buildDir : Maybe String := nothing}
: Package :=
mkPackage name version dependencies main buildDir;

--- Construct a ;SemVer; with useful default arguments.
mkVersion (major minor patch : Nat) {release : Maybe
String := nothing} {meta : Maybe String := nothing}
mkVersion
(major' minor' patch' : Nat)
{release' : Maybe String := nothing}
{meta' : Maybe String := nothing}
: SemVer :=
mkSemVer
(major := major;
minor := minor;
patch := patch;
release := release;
meta := meta);
mkSemVer@?{
major := major';
minor := minor';
patch := patch';
release := release';
meta := meta'
};

--- The default version used in `defaultPackage`.
defaultVersion : SemVer := mkVersion 0 0 0;
Expand Down
28 changes: 17 additions & 11 deletions include/package/PackageDescription/V2.juvix
Original file line number Diff line number Diff line change
Expand Up @@ -44,22 +44,28 @@ type Dependency :=
defaultStdlib;

--- Construct a ;Package; with useful default arguments.
defaultPackage {name : String := "my-project"} {version : SemVer := defaultVersion} {dependencies : List
Dependency := [defaultStdlib]} {main : Maybe
String := nothing} {buildDir : Maybe String := nothing}
defaultPackage
{name : String := "my-project"}
{version : SemVer := defaultVersion}
{dependencies : List Dependency := [defaultStdlib]}
{main : Maybe String := nothing}
{buildDir : Maybe String := nothing}
: Package :=
mkPackage name version dependencies main buildDir;

--- Construct a ;SemVer; with useful default arguments.
mkVersion (major minor patch : Nat) {release : Maybe
String := nothing} {meta : Maybe String := nothing}
mkVersion
(major' minor' patch' : Nat)
{release' : Maybe String := nothing}
{meta' : Maybe String := nothing}
: SemVer :=
mkSemVer
(major := major;
minor := minor;
patch := patch;
release := release;
meta := meta);
mkSemVer@?{
major := major';
minor := minor';
patch := patch';
release := release';
meta := meta'
};

--- The default version used in `defaultPackage`.
defaultVersion : SemVer := mkVersion 0 0 0;
Expand Down
39 changes: 34 additions & 5 deletions src/Juvix/Compiler/Concrete/Gen.hs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ module Juvix.Compiler.Concrete.Gen
where

import Juvix.Compiler.Concrete.Keywords
import Juvix.Compiler.Concrete.Language
import Juvix.Compiler.Concrete.Language.Base
import Juvix.Prelude

kw :: (Members '[Reader Interval] r) => Keyword -> Sem r KeywordRef
Expand All @@ -18,6 +18,22 @@ kw k = do
_keywordRefInterval = loc
}

simplestFunctionDef :: FunctionName s -> ExpressionType s -> FunctionDef s
simplestFunctionDef funName funBody =
FunctionDef
{ _signName = funName,
_signBody = SigBodyExpression funBody,
_signColonKw = Irrelevant Nothing,
_signArgs = [],
_signRetType = Nothing,
_signDoc = Nothing,
_signPragmas = Nothing,
_signBuiltin = Nothing,
_signTerminating = Nothing,
_signInstance = Nothing,
_signCoercion = Nothing
}

smallUniverseExpression :: forall s r. (SingI s) => (Members '[Reader Interval] r) => Sem r (ExpressionType s)
smallUniverseExpression = do
loc <- ask @Interval
Expand All @@ -29,6 +45,16 @@ smallUniverseExpression = do
_expressionAtoms = pure (AtomUniverse (smallUniverse loc))
}

isExhaustive :: (Member (Reader Interval) r) => Bool -> Sem r IsExhaustive
isExhaustive _isExhaustive = do
_isExhaustiveKw <-
Irrelevant
<$> if
| _isExhaustive -> kw kwAt
| otherwise -> kw kwAtQuestion

return IsExhaustive {..}

symbol :: (Member (Reader Interval) r) => Text -> Sem r Symbol
symbol t = do
l <- ask
Expand All @@ -39,12 +65,12 @@ expressionAtoms' _expressionAtoms = do
_expressionAtomsLoc <- Irrelevant <$> ask
return ExpressionAtoms {..}

namedArgument :: (Member (Reader Interval) r) => Text -> NonEmpty (ExpressionAtom 'Parsed) -> Sem r (NamedArgument 'Parsed)
namedArgument :: (Member (Reader Interval) r) => Text -> NonEmpty (ExpressionAtom 'Parsed) -> Sem r (NamedArgumentAssign 'Parsed)
namedArgument n as = do
_namedArgValue <- expressionAtoms' as
_namedArgName <- symbol n
_namedArgAssignKw <- Irrelevant <$> kw kwAssign
return NamedArgument {..}
return NamedArgumentAssign {..}

literalString :: (Member (Reader Interval) r) => Text -> Sem r (ExpressionAtom s)
literalString t = do
Expand All @@ -59,7 +85,7 @@ braced a = do
l <- ask
AtomBraces . WithLoc l <$> expressionAtoms' a

argumentBlock :: (Member (Reader Interval) r) => IsImplicit -> NonEmpty (NamedArgument 'Parsed) -> Sem r (ArgumentBlock 'Parsed)
argumentBlock :: (Member (Reader Interval) r) => IsImplicit -> NonEmpty (NamedArgumentAssign 'Parsed) -> Sem r (ArgumentBlock 'Parsed)
argumentBlock i as = do
parenL <- kw delimL
parenR <- kw delimR
Expand Down Expand Up @@ -109,5 +135,8 @@ mkList as = do
}
)

functionDefExpression :: (Member (Reader Interval) r) => NonEmpty (ExpressionAtom 'Parsed) -> Sem r (FunctionDefBody 'Parsed)
functionDefExpression ::
(Member (Reader Interval) r) =>
NonEmpty (ExpressionAtom 'Parsed) ->
Sem r (FunctionDefBody 'Parsed)
functionDefExpression exp = SigBodyExpression <$> expressionAtoms' exp
Loading
Loading