mirror of
https://github.com/fluencelabs/hackethberlin
synced 2025-04-24 17:02:18 +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(
|
||||
"someStruct",
|
||||
("address" → address) ::
|
||||
("owner" → `public`(address)) :: HNil
|
||||
("owner" → address) ::
|
||||
("size" -> uint256) ::
|
||||
("time" -> int128) :: HNil
|
||||
)
|
||||
|
||||
println(data.toVyper)
|
||||
|
@ -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")
|
||||
}
|
||||
}
|
@ -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(", ")}}"
|
||||
}
|
||||
|
@ -3,3 +3,5 @@ package fluence.hackethberlin.types
|
||||
trait Type {
|
||||
def toVyper: String
|
||||
}
|
||||
|
||||
trait PlainType extends Type
|
Loading…
x
Reference in New Issue
Block a user