diff --git a/src/main/scala/fluence/hackethberlin/MakeVyperApp.scala b/src/main/scala/fluence/hackethberlin/MakeVyperApp.scala index b34c6c2..44ace91 100644 --- a/src/main/scala/fluence/hackethberlin/MakeVyperApp.scala +++ b/src/main/scala/fluence/hackethberlin/MakeVyperApp.scala @@ -16,12 +16,11 @@ object MakeVyperApp extends App { ("address" → address) :: ("owner" → `public`(address)) :: ("holders" → (address ~>> bool)) :: - ("struct" → `public`(struct)) :: HNil + ("structMap" → `public`(Mapping(uint256, struct))) :: + ("struct" → `public`(struct)) :: + ("struct2" → struct) :: HNil ) - println(data.toVyper) - println(struct.toVyper) - } \ No newline at end of file diff --git a/src/main/scala/fluence/hackethberlin/types/Mapping.scala b/src/main/scala/fluence/hackethberlin/types/Mapping.scala index ac9356c..932355a 100644 --- a/src/main/scala/fluence/hackethberlin/types/Mapping.scala +++ b/src/main/scala/fluence/hackethberlin/types/Mapping.scala @@ -1,5 +1,5 @@ package fluence.hackethberlin.types -case class Mapping[K <: PrimitiveType, V <: Type](ktype: K, vtype: V) extends Type { +case class Mapping[K <: PrimitiveType, V <: Type](ktype: K, vtype: V) extends PlainType { override def toVyper: String = s"${vtype.toVyper}[${ktype.toVyper}]" } diff --git a/src/main/scala/fluence/hackethberlin/types/PrimitiveType.scala b/src/main/scala/fluence/hackethberlin/types/PrimitiveType.scala index e4a436c..9ee8c84 100644 --- a/src/main/scala/fluence/hackethberlin/types/PrimitiveType.scala +++ b/src/main/scala/fluence/hackethberlin/types/PrimitiveType.scala @@ -1,6 +1,6 @@ package fluence.hackethberlin.types -abstract sealed class PrimitiveType(name: String) extends Type { +abstract sealed class PrimitiveType(name: String) extends PlainType { self ⇒ override def toVyper: String = name diff --git a/src/main/scala/fluence/hackethberlin/types/StructType.scala b/src/main/scala/fluence/hackethberlin/types/StructType.scala index 4d9d415..7382eb5 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 { +class StructType[D <: HList](dataDef: D)(implicit dv: DataVyper[D], c: LUBConstraint[D, (String, PlainType)]) extends PlainType { override def toVyper: String = s"{${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 c08dc98..1fbe8ea 100644 --- a/src/main/scala/fluence/hackethberlin/types/Type.scala +++ b/src/main/scala/fluence/hackethberlin/types/Type.scala @@ -2,4 +2,6 @@ package fluence.hackethberlin.types trait Type { def toVyper: String -} \ No newline at end of file +} + +trait PlainType extends Type \ No newline at end of file