diff --git a/project/build.properties b/project/build.properties index c3e3abc..8db5ca2 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version = 1.1.4 \ No newline at end of file +sbt.version = 1.2.1 \ No newline at end of file diff --git a/src/main/scala/fluence/hackethberlin/MakeVyperApp.scala b/src/main/scala/fluence/hackethberlin/MakeVyperApp.scala index 73f8e82..6cb9e9b 100644 --- a/src/main/scala/fluence/hackethberlin/MakeVyperApp.scala +++ b/src/main/scala/fluence/hackethberlin/MakeVyperApp.scala @@ -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) diff --git a/src/main/scala/fluence/hackethberlin/types/PrimitiveType.scala b/src/main/scala/fluence/hackethberlin/types/PrimitiveType.scala index 3269480..1026420 100644 --- a/src/main/scala/fluence/hackethberlin/types/PrimitiveType.scala +++ b/src/main/scala/fluence/hackethberlin/types/PrimitiveType.scala @@ -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") } } \ No newline at end of file diff --git a/src/main/scala/fluence/hackethberlin/types/StructType.scala b/src/main/scala/fluence/hackethberlin/types/StructType.scala index 4d9d415..1e57b4b 100644 --- a/src/main/scala/fluence/hackethberlin/types/StructType.scala +++ b/src/main/scala/fluence/hackethberlin/types/StructType.scala @@ -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(", ")}}" } diff --git a/src/main/scala/fluence/hackethberlin/types/Type.scala b/src/main/scala/fluence/hackethberlin/types/Type.scala index 2f87ad9..1fbe8ea 100644 --- a/src/main/scala/fluence/hackethberlin/types/Type.scala +++ b/src/main/scala/fluence/hackethberlin/types/Type.scala @@ -3,3 +3,5 @@ package fluence.hackethberlin.types trait Type { def toVyper: String } + +trait PlainType extends Type \ No newline at end of file