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( val struct = new StructType(
"someStruct",
("address" address) :: ("address" address) ::
("owner" `public`(address)) :: HNil ("owner" address) ::
("size" -> uint256) ::
("time" -> int128) :: HNil
) )
println(data.toVyper) println(data.toVyper)

View File

@ -1,11 +1,15 @@
package fluence.hackethberlin.types 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 override def toVyper: String = name
} }
object PrimitiveType { object PrimitiveType {
trait Defs { trait Defs {
object address extends PrimitiveType("address") 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 package fluence.hackethberlin.types
import shapeless.HList import shapeless.{HList, LUBConstraint}
class StructType[D <: HList](dataDef: D)(implicit dv: DataVyper[D]) extends Type { class StructType[D <: HList](name: String, dataDef: D)(implicit dv: DataVyper[D], c: LUBConstraint[D, (String, PlainType)]) extends PlainType {
override def toVyper: String = s"{${dv.toVyperDefinitions(dataDef).mkString(", ")}}" override def toVyper: String = s"$name: {${dv.toVyperDefinitions(dataDef).mkString(", ")}}"
} }

View File

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