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

Upgrade to Scala 2.13 #21

Merged
merged 4 commits into from
Apr 9, 2024
Merged
Show file tree
Hide file tree
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
2 changes: 1 addition & 1 deletion package/version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.3.2
0.3.3
6 changes: 3 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<groupId>com.runtimeverification.k</groupId>
<artifactId>scala-kore</artifactId>
<packaging>jar</packaging>
<version>0.3.2</version>
<version>0.3.3</version>

<name>Scala support for KORE</name>

Expand Down Expand Up @@ -65,8 +65,8 @@
<properties>
<base>master</base>
<java.version>17</java.version>
<scala.majorVersion>2.12</scala.majorVersion>
<scala.minorVersion>18</scala.minorVersion>
<scala.majorVersion>2.13</scala.majorVersion>
<scala.minorVersion>13</scala.minorVersion>
<scala.version>${scala.majorVersion}.${scala.minorVersion}</scala.version>
<spotless.version>2.41.1</spotless.version>
<googleJavaFormat.version>1.18.1</googleJavaFormat.version>
Expand Down
80 changes: 42 additions & 38 deletions src/main/scala/com/runtimeverification/k/kore/Default.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,80 +2,83 @@
package com.runtimeverification.k.kore

import com.runtimeverification.k.kore
import scala.collection.immutable

object implementation {

private object ConcreteClasses {

case class Definition(att: kore.Attributes, modules: Seq[kore.Module]) extends kore.Definition
case class Definition(att: kore.Attributes, modules: immutable.Seq[kore.Module])
extends kore.Definition

case class Module(name: String, decls: Seq[Declaration], att: kore.Attributes)
case class Module(name: String, decls: immutable.Seq[Declaration], att: kore.Attributes)
extends kore.Module

case class Import(name: String, att: kore.Attributes) extends kore.Import

case class SortDeclaration(
params: Seq[kore.SortVariable],
params: immutable.Seq[kore.SortVariable],
sort: Sort,
att: kore.Attributes
) extends kore.SortDeclaration

case class HookSortDeclaration(
params: Seq[kore.SortVariable],
params: immutable.Seq[kore.SortVariable],
sort: Sort,
att: kore.Attributes
) extends kore.HookSortDeclaration

case class SymbolDeclaration(
symbol: kore.Symbol,
argSorts: Seq[Sort],
argSorts: immutable.Seq[Sort],
returnSort: Sort,
att: kore.Attributes
) extends kore.SymbolDeclaration

case class HookSymbolDeclaration(
symbol: kore.Symbol,
argSorts: Seq[Sort],
argSorts: immutable.Seq[Sort],
returnSort: Sort,
att: kore.Attributes
) extends kore.HookSymbolDeclaration

case class AliasDeclaration(
alias: kore.Alias,
argSorts: Seq[Sort],
argSorts: immutable.Seq[Sort],
returnSort: Sort,
leftPattern: Pattern,
rightPattern: Pattern,
att: kore.Attributes
) extends kore.AliasDeclaration

case class AxiomDeclaration(
params: Seq[kore.SortVariable],
params: immutable.Seq[kore.SortVariable],
pattern: Pattern,
att: kore.Attributes
) extends kore.AxiomDeclaration

case class ClaimDeclaration(
params: Seq[kore.SortVariable],
params: immutable.Seq[kore.SortVariable],
pattern: Pattern,
att: kore.Attributes
) extends kore.ClaimDeclaration

case class Attributes(patterns: Seq[Pattern]) extends kore.Attributes
case class Attributes(patterns: immutable.Seq[Pattern]) extends kore.Attributes

case class Variable(name: String, sort: Sort) extends kore.Variable

case class SetVariable(name: String, sort: Sort) extends kore.SetVariable

case class Application(head: kore.SymbolOrAlias, args: Seq[Pattern]) extends kore.Application
case class Application(head: kore.SymbolOrAlias, args: immutable.Seq[Pattern])
extends kore.Application

case class Top(s: Sort) extends kore.Top

case class Bottom(s: Sort) extends kore.Bottom

case class And(s: Sort, args: Seq[Pattern]) extends kore.And
case class And(s: Sort, args: immutable.Seq[Pattern]) extends kore.And

case class Or(s: Sort, args: Seq[Pattern]) extends kore.Or
case class Or(s: Sort, args: immutable.Seq[Pattern]) extends kore.Or

case class Not(s: Sort, _1: Pattern) extends kore.Not

Expand Down Expand Up @@ -110,62 +113,62 @@ object implementation {
override lazy val hashCode: Int = scala.runtime.ScalaRunTime._hashCode(this)
}

case class CompoundSort(ctr: String, params: Seq[Sort]) extends kore.CompoundSort {
case class CompoundSort(ctr: String, params: immutable.Seq[Sort]) extends kore.CompoundSort {
override lazy val toString = ctr + "{" + params.map(_.toString).mkString(", ") + "}"
override lazy val hashCode: Int = scala.runtime.ScalaRunTime._hashCode(this)
}

case class SymbolOrAlias(ctr: String, params: Seq[Sort]) extends kore.SymbolOrAlias {
case class SymbolOrAlias(ctr: String, params: immutable.Seq[Sort]) extends kore.SymbolOrAlias {
override lazy val toString = ctr + "{" + params.map(_.toString).mkString(", ") + "}"
override lazy val hashCode: Int = scala.runtime.ScalaRunTime._hashCode(this)
}

case class Symbol(ctr: String, params: Seq[Sort]) extends kore.Symbol
case class Symbol(ctr: String, params: immutable.Seq[Sort]) extends kore.Symbol

case class Alias(ctr: String, params: Seq[Sort]) extends kore.Alias
case class Alias(ctr: String, params: immutable.Seq[Sort]) extends kore.Alias
}

object DefaultBuilders extends Builders {

import implementation.{ ConcreteClasses => d }

def Definition(att: Attributes, modules: Seq[Module]): Definition =
def Definition(att: Attributes, modules: immutable.Seq[Module]): Definition =
d.Definition(att, modules)

def Module(name: String, decls: Seq[Declaration], att: Attributes): Module =
def Module(name: String, decls: immutable.Seq[Declaration], att: Attributes): Module =
d.Module(name, decls, att)

def Import(name: String, att: Attributes): Declaration = d.Import(name, att)

def SortDeclaration(
params: Seq[SortVariable],
params: immutable.Seq[SortVariable],
sort: Sort,
att: Attributes
): Declaration = d.SortDeclaration(params, sort, att)

def HookSortDeclaration(
params: Seq[SortVariable],
params: immutable.Seq[SortVariable],
sort: Sort,
att: Attributes
): Declaration = d.HookSortDeclaration(params, sort, att)

def SymbolDeclaration(
symbol: Symbol,
argSorts: Seq[Sort],
argSorts: immutable.Seq[Sort],
returnSort: Sort,
att: Attributes
): Declaration = d.SymbolDeclaration(symbol, argSorts, returnSort, att)

def HookSymbolDeclaration(
symbol: Symbol,
argSorts: Seq[Sort],
argSorts: immutable.Seq[Sort],
returnSort: Sort,
att: Attributes
): Declaration = d.HookSymbolDeclaration(symbol, argSorts, returnSort, att)

def AliasDeclaration(
alias: Alias,
argSorts: Seq[Sort],
argSorts: immutable.Seq[Sort],
returnSort: Sort,
leftPattern: Pattern,
rightPattern: Pattern,
Expand All @@ -174,42 +177,42 @@ object implementation {
d.AliasDeclaration(alias, argSorts, returnSort, leftPattern, rightPattern, att)

def AxiomDeclaration(
params: Seq[SortVariable],
params: immutable.Seq[SortVariable],
_1: Pattern,
att: Attributes
): Declaration = d.AxiomDeclaration(params, _1, att)

def ClaimDeclaration(
params: Seq[SortVariable],
params: immutable.Seq[SortVariable],
_1: Pattern,
att: Attributes
): Declaration = d.ClaimDeclaration(params, _1, att)

def Attributes(patterns: Seq[Pattern]): Attributes = d.Attributes(patterns)
def Attributes(patterns: immutable.Seq[Pattern]): Attributes = d.Attributes(patterns)

def Variable(name: String, sort: Sort): Variable = d.Variable(name, sort)

def SetVariable(name: String, sort: Sort): SetVariable = d.SetVariable(name, sort)

def Application(head: SymbolOrAlias, args: Seq[Pattern]): Pattern =
def Application(head: SymbolOrAlias, args: immutable.Seq[Pattern]): Pattern =
d.Application(head, args)

def Top(s: Sort): Pattern = d.Top(s)

def Bottom(s: Sort): Pattern = d.Bottom(s)

def And(s: Sort, _1: Pattern, _2: Pattern): Pattern = d.And(s, Seq(_1, _2))
def And(s: Sort, _1: Pattern, _2: Pattern): Pattern = d.And(s, immutable.Seq(_1, _2))

def And(s: Sort, args: Seq[Pattern]): Pattern =
def And(s: Sort, args: immutable.Seq[Pattern]): Pattern =
args.size match {
case 0 => Top(s)
case 1 => args(0)
case _ => d.And(s, args)
}

def Or(s: Sort, _1: Pattern, _2: Pattern): Pattern = d.Or(s, Seq(_1, _2))
def Or(s: Sort, _1: Pattern, _2: Pattern): Pattern = d.Or(s, immutable.Seq(_1, _2))

def Or(s: Sort, args: Seq[Pattern]): Pattern =
def Or(s: Sort, args: immutable.Seq[Pattern]): Pattern =
args.size match {
case 0 => Bottom(s)
case 1 => args(0)
Expand Down Expand Up @@ -251,19 +254,20 @@ object implementation {

def SortVariable(name: String): SortVariable = d.SortVariable(name)

def CompoundSort(ctr: String, params: Seq[Sort]): CompoundSort = d.CompoundSort(ctr, params)
def CompoundSort(ctr: String, params: immutable.Seq[Sort]): CompoundSort =
d.CompoundSort(ctr, params)

def SymbolOrAlias(ctr: String, params: Seq[Sort]): SymbolOrAlias =
def SymbolOrAlias(ctr: String, params: immutable.Seq[Sort]): SymbolOrAlias =
d.SymbolOrAlias(ctr, params)

def Symbol(ctr: String, params: Seq[Sort]): Symbol = d.Symbol(ctr, params)
def Symbol(ctr: String, params: immutable.Seq[Sort]): Symbol = d.Symbol(ctr, params)

def Alias(ctr: String, params: Seq[Sort]): Alias = d.Alias(ctr, params)
def Alias(ctr: String, params: immutable.Seq[Sort]): Alias = d.Alias(ctr, params)

def LeftAssoc(ctr: (Pattern, Pattern) => Pattern, args: Seq[Pattern]): Pattern =
def LeftAssoc(ctr: (Pattern, Pattern) => Pattern, args: immutable.Seq[Pattern]): Pattern =
args.reduceLeft((accum, p) => ctr(accum, p))

def RightAssoc(ctr: (Pattern, Pattern) => Pattern, args: Seq[Pattern]): Pattern =
def RightAssoc(ctr: (Pattern, Pattern) => Pattern, args: immutable.Seq[Pattern]): Pattern =
args.reduceRight((p, accum) => ctr(p, accum))
}
}
Loading
Loading