From 01e40df22aa793dbf4072a49b1834dc08d94756e Mon Sep 17 00:00:00 2001 From: ddworak Date: Fri, 12 Apr 2019 17:06:04 +0200 Subject: [PATCH 01/21] Use more specific type in implicit macro search --- .../src/main/scala/io/udash/macros/PropertyMacros.scala | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/macros/src/main/scala/io/udash/macros/PropertyMacros.scala b/macros/src/main/scala/io/udash/macros/PropertyMacros.scala index 816d3c191..b45e35896 100644 --- a/macros/src/main/scala/io/udash/macros/PropertyMacros.scala +++ b/macros/src/main/scala/io/udash/macros/PropertyMacros.scala @@ -12,6 +12,7 @@ class PropertyMacros(val ctx: blackbox.Context) extends AbstractMacroCommons(ctx val IsModelPropertyTemplateCls = tq"$Package.IsModelPropertyTemplate" val PropertyCreatorCls = tq"$Package.PropertyCreator" + val SeqPropertyCreatorCls = tq"$Package.SeqPropertyCreator" val SinglePropertyCreatorCls = tq"$Package.SinglePropertyCreator" val PropertyCreatorCompanion = q"$Package.PropertyCreator" val ModelPropertyCreatorCls = tq"$Package.ModelPropertyCreator" @@ -217,7 +218,12 @@ class PropertyMacros(val ctx: blackbox.Context) extends AbstractMacroCommons(ctx members.map { case (name, returnTpe) => val reifiedReturnTpe = reifySeqTpe(returnTpe) - q"""properties(${name.toString}) = implicitly[$PropertyCreatorCls[$reifiedReturnTpe]].newProperty(null.asInstanceOf[$reifiedReturnTpe], this)""" + val reifiedCreatorTpe = getType( + if (tpe <:< SeqTpe) tq"$SeqPropertyCreatorCls[${tpe.typeArgs.head}]" + else tq"$PropertyCreatorCls[$reifiedReturnTpe]" + ) + + q"""properties(${name.toString}) = implicitly[$reifiedCreatorTpe].newProperty(null.asInstanceOf[$reifiedReturnTpe], this)""" } } } From c82fd029fbe54d6a4164fdb9d3676361d73f64e1 Mon Sep 17 00:00:00 2001 From: ddworak Date: Fri, 12 Apr 2019 17:26:20 +0200 Subject: [PATCH 02/21] More specific requirement for SeqProperty factories --- .../main/scala/io/udash/properties/seq/SeqProperty.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/scala/io/udash/properties/seq/SeqProperty.scala b/core/src/main/scala/io/udash/properties/seq/SeqProperty.scala index 6c0f4b006..e54711c7e 100644 --- a/core/src/main/scala/io/udash/properties/seq/SeqProperty.scala +++ b/core/src/main/scala/io/udash/properties/seq/SeqProperty.scala @@ -5,15 +5,15 @@ import io.udash.properties.single.{AbstractProperty, CastableProperty, Property} object SeqProperty { /** Creates a blank DirectSeqProperty[T]. */ - def blank[T : PropertyCreator](implicit pc: PropertyCreator[Seq[T]], blank: Blank[Seq[T]]): SeqProperty[T, CastableProperty[T]] = + def blank[T: SeqPropertyCreator](implicit blank: Blank[Seq[T]]): SeqProperty[T, CastableProperty[T]] = Property.blank[Seq[T]].asSeq[T] /** Creates a DirectSeqProperty[T] with initial value. */ - def apply[T : PropertyCreator](item: T, more: T*)(implicit pc: PropertyCreator[Seq[T]]): SeqProperty[T, CastableProperty[T]] = + def apply[T: SeqPropertyCreator](item: T, more: T*): SeqProperty[T, CastableProperty[T]] = apply(item +: more) /** Creates a DirectSeqProperty[T] with initial value. */ - def apply[T : PropertyCreator](init: Seq[T])(implicit pc: PropertyCreator[Seq[T]]): SeqProperty[T, CastableProperty[T]] = + def apply[T: SeqPropertyCreator](init: Seq[T]): SeqProperty[T, CastableProperty[T]] = Property[Seq[T]](init).asSeq[T] } From b26a3b38f79ed7a24748994bf9a7e9e547862d6e Mon Sep 17 00:00:00 2001 From: ddworak Date: Fri, 12 Apr 2019 17:36:59 +0200 Subject: [PATCH 03/21] Test harness --- build.sbt | 1 + .../udash/properties/PropertyCreatorTest.scala | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/build.sbt b/build.sbt index 033fdeccb..c28fc4b11 100644 --- a/build.sbt +++ b/build.sbt @@ -37,6 +37,7 @@ val commonSettings = Seq( "-Xfuture", "-Xfatal-warnings", "-Xlint:_,-missing-interpolator", + "-Xlog-implicits", ), scalacOptions ++= { if (scalaBinaryVersion.value == "2.12") Seq( diff --git a/core/src/test/scala/io/udash/properties/PropertyCreatorTest.scala b/core/src/test/scala/io/udash/properties/PropertyCreatorTest.scala index 09939f16b..6b8e80562 100644 --- a/core/src/test/scala/io/udash/properties/PropertyCreatorTest.scala +++ b/core/src/test/scala/io/udash/properties/PropertyCreatorTest.scala @@ -6,6 +6,8 @@ class PropertyCreatorTest extends UdashCoreTest { // DO NOT REMOVE THIS IMPORT! import io.udash.properties.Properties._ + val x = SeqProperty.apply[Nothing](Seq.empty) + "PropertyCreator" should { "create Property for basic types (and handle init value)" in { """val p = Property.blank[String]""".stripMargin should compile @@ -1013,5 +1015,20 @@ class PropertyCreatorTest extends UdashCoreTest { |println(t.subSeq(_.y).get) |""".stripMargin should compile } + + + // "fail implicit search for SeqPropertyCreator[Nothing]" in { + // "SeqProperty.apply[Nothing](Seq.empty)" shouldNot compile + // } + // case class Chunk[T]( + // data: Property[T] = Property.blank + // ) + // case class Chunk[T]( + // data: SeqProperty[T] = SeqProperty.blank + // ) + // //https://github.com/UdashFramework/udash-core/issues/271 + // "work with inferred SeqProperty factory type params" in { + // + // } } } From 9b2722319b223e13a8460fd66d002fe45695c6df Mon Sep 17 00:00:00 2001 From: ddworak Date: Mon, 15 Apr 2019 09:41:52 +0200 Subject: [PATCH 04/21] Cleanup implicit provider traits --- .../io/udash/properties/PropertyCreator.scala | 5 +- .../properties/PropertyCreatorImplicits.scala | 57 ------------------- .../properties/TuplePropertyCreators.scala | 53 +++++++++++++++++ 3 files changed, 57 insertions(+), 58 deletions(-) delete mode 100644 core/src/main/scala/io/udash/properties/PropertyCreatorImplicits.scala create mode 100644 core/src/main/scala/io/udash/properties/TuplePropertyCreators.scala diff --git a/core/src/main/scala/io/udash/properties/PropertyCreator.scala b/core/src/main/scala/io/udash/properties/PropertyCreator.scala index be15aa350..d5cd7ed60 100644 --- a/core/src/main/scala/io/udash/properties/PropertyCreator.scala +++ b/core/src/main/scala/io/udash/properties/PropertyCreator.scala @@ -18,7 +18,7 @@ trait PropertyCreator[T] { protected def create(prt: ReadableProperty[_]): CastableProperty[T] } -object PropertyCreator extends PropertyCreatorImplicits { +object PropertyCreator extends TuplePropertyCreators with PropertyCreatorImplicitsLow { /** Marker trait for macro-materialized ModelProperty instances. Serves to prioritize macro-generated instance over other implicits. */ trait MacroGeneratedPropertyCreator @@ -37,6 +37,9 @@ class SeqPropertyCreator[T : PropertyCreator] extends PropertyCreator[Seq[T]] { protected def create(prt: ReadableProperty[_]): CastableProperty[Seq[T]] = new DirectSeqPropertyImpl[T](prt, PropertyCreator.newID()) } +object SeqPropertyCreator { + implicit def materializeSeq[T: PropertyCreator]: SeqPropertyCreator[T] = new SeqPropertyCreator[T] +} @implicitNotFound("Class ${T} cannot be used as ModelProperty template. Add `extends HasModelPropertyCreator[${T}]` to companion object of ${T}.") abstract class ModelPropertyCreator[T] extends PropertyCreator[T] diff --git a/core/src/main/scala/io/udash/properties/PropertyCreatorImplicits.scala b/core/src/main/scala/io/udash/properties/PropertyCreatorImplicits.scala deleted file mode 100644 index a5c9e6d56..000000000 --- a/core/src/main/scala/io/udash/properties/PropertyCreatorImplicits.scala +++ /dev/null @@ -1,57 +0,0 @@ -package io.udash.properties - -trait PropertyCreatorImplicitsLow { - implicit def materializeSingle[T]: PropertyCreator[T] = - macro io.udash.macros.PropertyMacros.reifyPropertyCreator[T] -} - -trait PropertyCreatorImplicits extends PropertyCreatorImplicitsLow { - implicit def materializeSeq[T : PropertyCreator]: SeqPropertyCreator[T] = - new SeqPropertyCreator[T] - - private type PC[T] = PropertyCreator[T] - implicit def tuple1[T : PC]: ModelPropertyCreator[Tuple1[T]] = - ModelPropertyCreator.materialize[Tuple1[T]] - implicit def tuple2[T1 : PC, T2 : PC]: ModelPropertyCreator[(T1, T2)] = - ModelPropertyCreator.materialize[(T1, T2)] - implicit def tuple3[T1 : PC, T2 : PC, T3 : PC]: ModelPropertyCreator[(T1, T2, T3)] = - ModelPropertyCreator.materialize[(T1, T2, T3)] - implicit def tuple4[T1 : PC, T2 : PC, T3 : PC, T4 : PC]: ModelPropertyCreator[(T1, T2, T3, T4)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4)] - implicit def tuple5[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5)] - implicit def tuple6[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC, T6 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6)] - implicit def tuple7[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC, T6 : PC, T7 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7)] - implicit def tuple8[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC, T6 : PC, T7 : PC, T8 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8)] - implicit def tuple9[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC, T6 : PC, T7 : PC, T8 : PC, T9 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9)] - implicit def tuple10[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC, T6 : PC, T7 : PC, T8 : PC, T9 : PC, T10 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)] - implicit def tuple11[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC, T6 : PC, T7 : PC, T8 : PC, T9 : PC, T10 : PC, T11 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)] - implicit def tuple12[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC, T6 : PC, T7 : PC, T8 : PC, T9 : PC, T10 : PC, T11 : PC, T12 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)] - implicit def tuple13[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC, T6 : PC, T7 : PC, T8 : PC, T9 : PC, T10 : PC, T11 : PC, T12 : PC, T13 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)] - implicit def tuple14[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC, T6 : PC, T7 : PC, T8 : PC, T9 : PC, T10 : PC, T11 : PC, T12 : PC, T13 : PC, T14 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)] - implicit def tuple15[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC, T6 : PC, T7 : PC, T8 : PC, T9 : PC, T10 : PC, T11 : PC, T12 : PC, T13 : PC, T14 : PC, T15 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)] - implicit def tuple16[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC, T6 : PC, T7 : PC, T8 : PC, T9 : PC, T10 : PC, T11 : PC, T12 : PC, T13 : PC, T14 : PC, T15 : PC, T16 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)] - implicit def tuple17[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC, T6 : PC, T7 : PC, T8 : PC, T9 : PC, T10 : PC, T11 : PC, T12 : PC, T13 : PC, T14 : PC, T15 : PC, T16 : PC, T17 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)] - implicit def tuple18[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC, T6 : PC, T7 : PC, T8 : PC, T9 : PC, T10 : PC, T11 : PC, T12 : PC, T13 : PC, T14 : PC, T15 : PC, T16 : PC, T17 : PC, T18 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)] - implicit def tuple19[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC, T6 : PC, T7 : PC, T8 : PC, T9 : PC, T10 : PC, T11 : PC, T12 : PC, T13 : PC, T14 : PC, T15 : PC, T16 : PC, T17 : PC, T18 : PC, T19 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)] - implicit def tuple20[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC, T6 : PC, T7 : PC, T8 : PC, T9 : PC, T10 : PC, T11 : PC, T12 : PC, T13 : PC, T14 : PC, T15 : PC, T16 : PC, T17 : PC, T18 : PC, T19 : PC, T20 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)] - implicit def tuple21[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC, T6 : PC, T7 : PC, T8 : PC, T9 : PC, T10 : PC, T11 : PC, T12 : PC, T13 : PC, T14 : PC, T15 : PC, T16 : PC, T17 : PC, T18 : PC, T19 : PC, T20 : PC, T21 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)] - implicit def tuple22[T1 : PC, T2 : PC, T3 : PC, T4 : PC, T5 : PC, T6 : PC, T7 : PC, T8 : PC, T9 : PC, T10 : PC, T11 : PC, T12 : PC, T13 : PC, T14 : PC, T15 : PC, T16 : PC, T17 : PC, T18 : PC, T19 : PC, T20 : PC, T21 : PC, T22 : PC]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)] = - ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)] -} \ No newline at end of file diff --git a/core/src/main/scala/io/udash/properties/TuplePropertyCreators.scala b/core/src/main/scala/io/udash/properties/TuplePropertyCreators.scala new file mode 100644 index 000000000..26e552f59 --- /dev/null +++ b/core/src/main/scala/io/udash/properties/TuplePropertyCreators.scala @@ -0,0 +1,53 @@ +package io.udash.properties + +trait PropertyCreatorImplicitsLow { this: PropertyCreator.type => + implicit def materializeSingle[T]: PropertyCreator[T] = macro io.udash.macros.PropertyMacros.reifyPropertyCreator[T] +} + +trait TuplePropertyCreators { this: PropertyCreator.type => + + implicit def tuple1[T: PropertyCreator]: ModelPropertyCreator[Tuple1[T]] = + ModelPropertyCreator.materialize[Tuple1[T]] + implicit def tuple2[T1: PropertyCreator, T2: PropertyCreator]: ModelPropertyCreator[(T1, T2)] = + ModelPropertyCreator.materialize[(T1, T2)] + implicit def tuple3[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3)] = + ModelPropertyCreator.materialize[(T1, T2, T3)] + implicit def tuple4[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4)] + implicit def tuple5[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5)] + implicit def tuple6[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator, T6: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6)] + implicit def tuple7[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator, T6: PropertyCreator, T7: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7)] + implicit def tuple8[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator, T6: PropertyCreator, T7: PropertyCreator, T8: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8)] + implicit def tuple9[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator, T6: PropertyCreator, T7: PropertyCreator, T8: PropertyCreator, T9: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9)] + implicit def tuple10[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator, T6: PropertyCreator, T7: PropertyCreator, T8: PropertyCreator, T9: PropertyCreator, T10: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)] + implicit def tuple11[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator, T6: PropertyCreator, T7: PropertyCreator, T8: PropertyCreator, T9: PropertyCreator, T10: PropertyCreator, T11: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)] + implicit def tuple12[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator, T6: PropertyCreator, T7: PropertyCreator, T8: PropertyCreator, T9: PropertyCreator, T10: PropertyCreator, T11: PropertyCreator, T12: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)] + implicit def tuple13[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator, T6: PropertyCreator, T7: PropertyCreator, T8: PropertyCreator, T9: PropertyCreator, T10: PropertyCreator, T11: PropertyCreator, T12: PropertyCreator, T13: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)] + implicit def tuple14[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator, T6: PropertyCreator, T7: PropertyCreator, T8: PropertyCreator, T9: PropertyCreator, T10: PropertyCreator, T11: PropertyCreator, T12: PropertyCreator, T13: PropertyCreator, T14: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)] + implicit def tuple15[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator, T6: PropertyCreator, T7: PropertyCreator, T8: PropertyCreator, T9: PropertyCreator, T10: PropertyCreator, T11: PropertyCreator, T12: PropertyCreator, T13: PropertyCreator, T14: PropertyCreator, T15: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)] + implicit def tuple16[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator, T6: PropertyCreator, T7: PropertyCreator, T8: PropertyCreator, T9: PropertyCreator, T10: PropertyCreator, T11: PropertyCreator, T12: PropertyCreator, T13: PropertyCreator, T14: PropertyCreator, T15: PropertyCreator, T16: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)] + implicit def tuple17[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator, T6: PropertyCreator, T7: PropertyCreator, T8: PropertyCreator, T9: PropertyCreator, T10: PropertyCreator, T11: PropertyCreator, T12: PropertyCreator, T13: PropertyCreator, T14: PropertyCreator, T15: PropertyCreator, T16: PropertyCreator, T17: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)] + implicit def tuple18[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator, T6: PropertyCreator, T7: PropertyCreator, T8: PropertyCreator, T9: PropertyCreator, T10: PropertyCreator, T11: PropertyCreator, T12: PropertyCreator, T13: PropertyCreator, T14: PropertyCreator, T15: PropertyCreator, T16: PropertyCreator, T17: PropertyCreator, T18: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)] + implicit def tuple19[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator, T6: PropertyCreator, T7: PropertyCreator, T8: PropertyCreator, T9: PropertyCreator, T10: PropertyCreator, T11: PropertyCreator, T12: PropertyCreator, T13: PropertyCreator, T14: PropertyCreator, T15: PropertyCreator, T16: PropertyCreator, T17: PropertyCreator, T18: PropertyCreator, T19: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)] + implicit def tuple20[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator, T6: PropertyCreator, T7: PropertyCreator, T8: PropertyCreator, T9: PropertyCreator, T10: PropertyCreator, T11: PropertyCreator, T12: PropertyCreator, T13: PropertyCreator, T14: PropertyCreator, T15: PropertyCreator, T16: PropertyCreator, T17: PropertyCreator, T18: PropertyCreator, T19: PropertyCreator, T20: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)] + implicit def tuple21[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator, T6: PropertyCreator, T7: PropertyCreator, T8: PropertyCreator, T9: PropertyCreator, T10: PropertyCreator, T11: PropertyCreator, T12: PropertyCreator, T13: PropertyCreator, T14: PropertyCreator, T15: PropertyCreator, T16: PropertyCreator, T17: PropertyCreator, T18: PropertyCreator, T19: PropertyCreator, T20: PropertyCreator, T21: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)] + implicit def tuple22[T1: PropertyCreator, T2: PropertyCreator, T3: PropertyCreator, T4: PropertyCreator, T5: PropertyCreator, T6: PropertyCreator, T7: PropertyCreator, T8: PropertyCreator, T9: PropertyCreator, T10: PropertyCreator, T11: PropertyCreator, T12: PropertyCreator, T13: PropertyCreator, T14: PropertyCreator, T15: PropertyCreator, T16: PropertyCreator, T17: PropertyCreator, T18: PropertyCreator, T19: PropertyCreator, T20: PropertyCreator, T21: PropertyCreator, T22: PropertyCreator]: ModelPropertyCreator[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)] = + ModelPropertyCreator.materialize[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)] +} \ No newline at end of file From a3dcdb215e1543cd9cdc59a5c2271f69aeec3c64 Mon Sep 17 00:00:00 2001 From: ddworak Date: Mon, 15 Apr 2019 14:55:38 +0200 Subject: [PATCH 05/21] Add Properties to always used imports --- .idea/codeStyles/Project.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index d6f6d5d23..a4412b8e0 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -4,6 +4,11 @@