mirror of
https://github.com/fluencelabs/hackethberlin
synced 2025-04-25 17:32:16 +00:00
contraint to types in struct
This commit is contained in:
parent
9eed017f30
commit
146e3433e3
@ -1 +1 @@
|
|||||||
sbt.version = 1.1.4
|
sbt.version = 1.2.1
|
@ -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)
|
||||||
|
@ -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")
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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(", ")}}"
|
||||||
}
|
}
|
||||||
|
@ -3,3 +3,5 @@ package fluence.hackethberlin.types
|
|||||||
trait Type {
|
trait Type {
|
||||||
def toVyper: String
|
def toVyper: String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
trait PlainType extends Type
|
Loading…
x
Reference in New Issue
Block a user