Skip to content

Commit 2e42f25

Browse files
committed
Cleanup: remove old features, remove ternary, fix some scala 3 syntax, fix lambdas
1 parent f84511c commit 2e42f25

25 files changed

Lines changed: 98 additions & 217 deletions

File tree

cogen/src/main/scala/org/combinators/cogen/Command.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ trait Command {
2121

2222
liftF[Command.Performable[Context, *], Result](new Command.Performable[Context, Result] {
2323
type Cmd = Self
24-
val cmd = self
25-
val interpreter = interp
24+
val cmd: Self = self
25+
val interpreter: Understands[Context, Self] = interp
2626
})
2727
}
2828
}

cogen/src/main/scala/org/combinators/cogen/paradigm/AnyParadigm.scala

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,6 @@ case class ResolveImport[Import, T](forElem: T) extends Command {
7171
type Result = Option[Import]
7272
}
7373

74-
case class Ternary[Expression, R](
75-
condition: Expression,
76-
trueExpression: Expression,
77-
falseExpression: Expression) extends Command {
78-
type Result = R
79-
}
80-
8174
case class IfThenElse[Expression, MandatoryBlock, Block, R](
8275
condition: Expression,
8376
ifBranch: MandatoryBlock,
@@ -186,10 +179,6 @@ trait AnyParadigm {
186179
implicit val canDebugInMethodBody: Understands[MethodBodyContext, Debug]
187180
def debug(tag:String = ""): Generator[MethodBodyContext, Unit] =
188181
AnyParadigm.capability(Debug(tag))
189-
190-
implicit val canOutputToConsole: Understands[MethodBodyContext, OutputToConsole[Expression]]
191-
def output(expr:Expression): Generator[MethodBodyContext, Unit] =
192-
AnyParadigm.capability(OutputToConsole[Expression](expr))
193182

194183
implicit val canAddImportInMethodBody: Understands[MethodBodyContext, AddImport[Import]]
195184
def addImport(imp: Import): Generator[MethodBodyContext, Unit] =
@@ -252,8 +241,8 @@ object AnyParadigm {
252241

253242
def capability[Ctxt, R, Cmd <: Command.WithResult[R]]
254243
(cmd: Cmd)
255-
(implicit interp: Understands[Ctxt, Cmd]): Generator[Ctxt, R] = {
256-
cmd.interpret[Ctxt, Cmd](interp)
244+
(using interp: Understands[Ctxt, Cmd]): Generator[Ctxt, R] = {
245+
cmd.interpret[Ctxt, Cmd](using interp)
257246
}
258247

259248
object syntax {

cogen/src/main/scala/org/combinators/cogen/paradigm/ObjectOriented.scala

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,6 @@ trait ObjectOriented {
136136
def addImplemented(interface: Type): Generator[ClassContext, Unit] =
137137
AnyParadigm.capability(AddImplemented(interface))
138138

139-
// FIRST REMOVE CAPABILITY
140-
implicit val canRemoveMethodFromClass: Understands[ClassContext, RemoveMethod[Type, Name]]
141-
def removeMethod(interface: Type, name:Name): Generator[ClassContext, Unit] =
142-
AnyParadigm.capability(RemoveMethod(interface, name))
143-
144139
implicit val canAddFieldInClass: Understands[ClassContext, AddField[Name, Type, Expression]]
145140
def addField(name: Name, tpe: Type, init:Option[Expression] = Option.empty): Generator[ClassContext, Unit] =
146141
AnyParadigm.capability(AddField[Name, Type, Expression](name, tpe, initializer = init))
@@ -332,7 +327,7 @@ trait ObjectOriented {
332327
def addClassToProject(classGen: Generator[ClassContext, Unit], qualifiedName: Name* ): Generator[ProjectContext, Unit] = {
333328
import compilationUnitCapabilities._
334329
import base.projectCapabilities._
335-
addCompilationUnit(AddClass(qualifiedName.last, classGen).interpret, qualifiedName: _*)
330+
addCompilationUnit(AddClass(qualifiedName.last, classGen).interpret, qualifiedName*)
336331
}
337332

338333
implicit val canAddTypeLookupForClassesInProject: Understands[ProjectContext, AddTypeLookup[ClassContext, Type]]

cogen/src/main/scala/org/combinators/cogen/paradigm/ParametricPolymorphism.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ trait ParametricPolymorphism {
2828
AnyParadigm.capability(AddTypeParameter[Name, TypeParameterContext](name, spec))
2929

3030
implicit val canGetTypeArgumentsInMethod: Understands[MethodBodyContext, GetTypeArguments[Type]]
31-
def getTypeArguments(): Generator[MethodBodyContext, Seq[Type]] =
31+
def getTypeArguments: Generator[MethodBodyContext, Seq[Type]] =
3232
AnyParadigm.capability(GetTypeArguments[Type]())
3333

3434
implicit val canApplyTypeInMethod: Understands[MethodBodyContext, Apply[Type, Type, Type]]

cogen/src/main/scala/org/combinators/cogen/paradigm/control/Functional.scala

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.combinators.cogen.paradigm.control
22

3-
import org.combinators.cogen.paradigm.{AnyParadigm, Apply, IfThenElse, Reify, Ternary}
3+
import org.combinators.cogen.paradigm.{AnyParadigm, Apply, IfThenElse, Reify}
44
import org.combinators.cogen.{Command, TypeRep, Understands}
55
import Command.Generator
66

@@ -60,18 +60,6 @@ trait Functional[Context] extends Lambdas[Context] {
6060
elseBlock
6161
))
6262

63-
implicit val canTernary: Understands[Context, Ternary[Expression, Expression]]
64-
def ternary(
65-
cond: Expression,
66-
trueExpression: Expression,
67-
falseExpression: Expression): Generator[Context, Expression] =
68-
AnyParadigm.capability(
69-
Ternary[Expression, Expression](
70-
cond,
71-
trueExpression,
72-
falseExpression)
73-
)
74-
7563
implicit val canPatternMatch: Understands[Context, PatternMatch[Context, PatternContext, Expression]]
7664
def patternMatch(
7765
onValue: Expression,

cogen/src/main/scala/org/combinators/cogen/paradigm/control/Imperative.scala

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package org.combinators.cogen.paradigm.control
33
import org.combinators.cogen.{Command, Understands}
44
import Command.Generator
55

6-
import org.combinators.cogen.paradigm.{AnyParadigm, IfThenElse, Ternary}
6+
import org.combinators.cogen.paradigm.{AnyParadigm, IfThenElse}
77

88
case class DeclareVariable[Name, Type, Init, Res](name: Name, tpe: Type, initialization: Init) extends Command {
99
type Result = Res
@@ -55,15 +55,6 @@ trait Imperative[Context] {
5555
condition, ifBranch, elseIfs, elseBranch
5656
))
5757

58-
implicit val canTernary: Understands[Context, Ternary[Expression, Expression]]
59-
def ternary(
60-
condition: Expression,
61-
trueExpression: Expression,
62-
falseExpression: Expression): Generator[Context, Expression] =
63-
AnyParadigm.capability(Ternary[Expression, Expression](
64-
condition, trueExpression, falseExpression
65-
))
66-
6758
implicit val canWhile: Understands[Context, While[Context, Expression, Statement]]
6859
def whileLoop(condition: Expression, block: Generator[Context, Unit]): Generator[Context, Statement] =
6960
AnyParadigm.capability(While[Context, Expression, Statement](condition, block))

cogen/src/main/scala/org/combinators/cogen/paradigm/ffi/Strings.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ trait Strings[Context] extends FFI {
5050
sepExp <- Reify[String, Expression](TypeRep.String, sep).interpret
5151
endExp <- Reify[String, Expression](TypeRep.String, end).interpret
5252
inters = startExp +: make(sepExp, endExp, tl => tl, exprs)
53-
res <- stringAppend(inters:_*)
53+
res <- stringAppend(inters*)
5454
} yield res
5555
}
5656

language/inbetween/src/main/scala/org/combinators/ep/language/inbetween/any/AnyParadigm.scala

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,6 @@ trait AnyParadigm[A, S](val ast: AnyAST & A, val syntax: AbstractSyntax.Abstract
7272
(context, ())
7373
}
7474
}
75-
implicit val canOutputToConsole: Understands[MethodBodyContext, OutputToConsole[syntax.Expression]] = new Understands[MethodBodyContext, OutputToConsole[syntax.Expression]] {
76-
def perform(context: MethodBodyContext, command: OutputToConsole[syntax.Expression]): (MethodBodyContext, Unit) = {
77-
(context, ())
78-
}
79-
}
8075

8176
implicit val canAddImportInMethodBody: Understands[MethodBodyContext, AddImport[syntax.Import]] = new Understands[MethodBodyContext, AddImport[syntax.Import]] {
8277
def perform(context: MethodBodyContext, command: AddImport[syntax.Import]): (MethodBodyContext, Unit) = {

language/inbetween/src/main/scala/org/combinators/ep/language/inbetween/functional/control/Functional.scala

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package org.combinators.ep.language.inbetween.functional.control
33
import org.combinators.cogen.Command.Generator
44
import org.combinators.cogen.paradigm.control.*
55
import org.combinators.cogen.paradigm.control.{DeclareFunVariable as DFV, Functional as Fun}
6-
import org.combinators.cogen.paradigm.{Apply, IfThenElse, Reify, control, Ternary}
6+
import org.combinators.cogen.paradigm.{Apply, IfThenElse, Reify, control}
77
import org.combinators.cogen.{Command, Understands, paradigm}
88
import org.combinators.ep.language.inbetween.any
99
import org.combinators.ep.language.inbetween.any.AnyParadigm
@@ -44,13 +44,6 @@ trait Functional[AST <: FunctionalControlAST, B](val _base: AnyParadigm.WithAST[
4444
(resContext, functionalControlFactory.declareFunVariable(command.name, command.tpe, isRecursive = true, initExp, inExp))
4545
}
4646
}
47-
48-
implicit val canTernary: Understands[any.Method, Ternary[any.Expression, any.Expression]] =
49-
new Understands[any.Method, Ternary[any.Expression, any.Expression]] {
50-
override def perform(context: any.Method, command: Ternary[any.Expression, any.Expression]): (any.Method, any.Expression) = {
51-
(context, functionalControlFactory.funIfThenElse(command.condition, command.trueExpression, Seq.empty, command.falseExpression))
52-
}
53-
}
5447

5548
implicit val canIfThenElse: Understands[any.Method, IfThenElse[any.Expression, Generator[any.Method, any.Expression], Generator[any.Method, any.Expression], any.Expression]] =
5649
new Understands[any.Method, IfThenElse[any.Expression, Generator[any.Method, any.Expression], Generator[any.Method, any.Expression], any.Expression]] {

language/inbetween/src/main/scala/org/combinators/ep/language/inbetween/imperative/Imperative.scala

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.combinators.ep.language.inbetween.imperative /*DI:LI:AI*/
22

3-
import org.combinators.cogen.paradigm.{IfThenElse, control, Ternary}
3+
import org.combinators.cogen.paradigm.{IfThenElse, control}
44
import org.combinators.cogen.paradigm.control.{AssignVariable, DeclareVariable, LiftExpression, Return, While}
55
import org.combinators.cogen.Command.Generator
66
import org.combinators.cogen.{Command, FileWithPath, Understands, paradigm}
@@ -44,21 +44,7 @@ trait Imperative[AST <: ImperativeAST, B](val _base: AnyParadigm.WithAST[AST] &
4444
(context, liftStmt)
4545
}
4646
}
47-
implicit val canTernary: Understands[Ctxt, Ternary[any.Expression, any.Expression]] =
48-
new Understands[Ctxt, Ternary[any.Expression, any.Expression]] {
49-
/** Returns the updated context and the result of the command. */
50-
override def perform(context: Ctxt, command: Ternary[any.Expression, any.Expression]): (Ctxt, any.Expression) = {
51-
def contextWithoutMethodBody(context: Ctxt) =
52-
context.copy(statements = Seq.empty)
53-
54-
val (condCtxt, cond) = Command.runGenerator(Command.lift[Ctxt, any.Expression](command.condition), contextWithoutMethodBody(context))
55-
val (trueCtxt, trueExpr) = Command.runGenerator(Command.lift[Ctxt, any.Expression](command.trueExpression), contextWithoutMethodBody(condCtxt))
56-
val (falseCtxt, falseExpr) = Command.runGenerator(Command.lift[Ctxt, any.Expression](command.falseExpression), contextWithoutMethodBody(trueCtxt))
57-
58-
val ternaryExpr = imperativeFactory.tertiary(cond, trueExpr, falseExpr)
59-
(context.copy(statements = context.statements), ternaryExpr)
60-
}
61-
}
47+
6248
implicit val canIfThenElse: Understands[Ctxt, IfThenElse[any.Expression, Generator[Ctxt, Unit], Option[Generator[Ctxt, Unit]], any.Statement]] =
6349
new Understands[Ctxt, IfThenElse[any.Expression, Generator[Ctxt, Unit], Option[Generator[Ctxt, Unit]], any.Statement]] {
6450
/** Returns the updated context and the result of the command. */

0 commit comments

Comments
 (0)