contraint to types in struct

This commit is contained in:
dmitry.shakhtarin 2018-09-08 00:23:25 +03:00
parent 9eed017f30
commit 146e3433e3
5 changed files with 15 additions and 6 deletions

View File

@ -1 +1 @@
sbt.version = 1.1.4
sbt.version = 1.2.1

View File

@ -11,8 +11,11 @@ object MakeVyperApp extends App {
)
val struct = new StructType(
"someStruct",
("address" address) ::
("owner" `public`(address)) :: HNil
("owner" address) ::
("size" -> uint256) ::
("time" -> int128) :: HNil
)
println(data.toVyper)

View File

@ -1,11 +1,15 @@
package fluence.hackethberlin.types
abstract sealed class PrimitiveType(name: String) extends Type {
abstract sealed class PrimitiveType(name: String) extends PlainType {
override def toVyper: String = name
}
object PrimitiveType {
trait Defs {
object address extends PrimitiveType("address")
object bool extends PrimitiveType("bool")
object int128 extends PrimitiveType("int128")
object uint256 extends PrimitiveType("uint256")
object decimal extends PrimitiveType("decimal")
}
}

View File

@ -1,7 +1,7 @@
package fluence.hackethberlin.types
import shapeless.HList
import shapeless.{HList, LUBConstraint}
class StructType[D <: HList](dataDef: D)(implicit dv: DataVyper[D]) extends Type {
override def toVyper: String = s"{${dv.toVyperDefinitions(dataDef).mkString(", ")}}"
class StructType[D <: HList](name: String, dataDef: D)(implicit dv: DataVyper[D], c: LUBConstraint[D, (String, PlainType)]) extends PlainType {
override def toVyper: String = s"$name: {${dv.toVyperDefinitions(dataDef).mkString(", ")}}"
}

View File

@ -3,3 +3,5 @@ package fluence.hackethberlin.types
trait Type {
def toVyper: String
}
trait PlainType extends Type