On Thu, Feb 19, 2009 at 6:49 AM, Derek Chen-Becker <[email protected]>wrote:
> Shouldn't it be > > override def fieldOrder: List[BaseOwnedMappedField[Transaction]] = txtime > :: amount :: summary :: Nil > > I did try that and it gave the same error. In any case, List(...) works. This is because the :: (cons) operation does inference on each cons element, rather than the List as a whole. At some point, it gets confused. Please use List(). > > > Derek > > > On Thu, Feb 19, 2009 at 2:35 AM, Jorge Ortiz <[email protected]>wrote: > >> Yup, this is a type inference bug. If I'm not mistaken then >> >> override def fieldOrder: BaseOwnedMappedField[Transaction] = txtime :: >> amount :: summary :: Nil >> >> should also work. >> >> In any case, I'd probably just stick with the List(...) syntax. >> >> --j >> >> >> On Wed, Feb 18, 2009 at 10:23 PM, Derek Chen-Becker < >> [email protected]> wrote: >> >>> 0.11-SNAPSHOT, and I'm writing up some example code for the book. I have >>> the following class/object: >>> >>> class Transaction extends LongKeyedMapper[Transaction] with IdPK { >>> def getSingleton = Transaction >>> >>> object account extends MappedLongForeignKey(this, Account) { >>> override def dbIndexed_? = true >>> } >>> >>> object txtime extends MappedDateTime(this) >>> >>> // The amount has up to 16 digits and 2 decimal places >>> object amount extends MappedDecimal(this, MathContext.DECIMAL64, 2) >>> >>> // Holds a brief description of the transaction >>> object summary extends MappedString(this, 100) >>> >>> object notes extends MappedTextarea(this, 1000) { >>> override def textareaCols = 60 >>> override def textareaRows = 8 >>> } >>> >>> def tags = TransactionTag.findAll(By(TransactionTag.transaction, >>> this.id)) >>> } >>> >>> object Transaction extends Transaction with >>> LongKeyedMetaMapper[Transaction] { >>> override def fieldOrder = txtime :: amount :: summary :: Nil >>> } >>> >>> The compile error I get is: >>> >>> [WARNING] >>> /home/software/pocketchangeapp/PocketChange/src/main/scala/com/pocketchangeapp/model/Transaction.scala:35: >>> error: inferred type arguments [net.liftweb.mapper.MappedField[_ >: _1 with >>> java.util.Date <: java.io.Serializable, >>> com.pocketchangeapp.model.Transaction]] do not conform to method ::'s type >>> parameter bounds [B >: net.liftweb.mapper.MappedField[_ >: String with >>> BigDecimal <: java.io.Serializable, >>> com.pocketchangeapp.model.Transaction]{def jdbcFriendly(String): >>> java.io.Serializable}] >>> [WARNING] override def fieldOrder = txtime :: amount :: summary :: Nil >>> [WARNING] ^ >>> [WARNING] one error found >>> >>> If I remove the "summary" element from the fieldOrder list then it >>> compiles fine. Likewise, if I remove txtime and put summary and notes into >>> the list it compiles fine. I'm trying to get my head around all of the >>> nested type bounds in the error message but I'm not seeing anything obvious >>> other than the weird "String with BigDecimal" bound. I tried using an >>> explicit type for fieldOrder but that doesn't work either. >>> >>> I finally tried changing fieldOrder to: >>> >>> override def fieldOrder = List(txtime, amount, summary, notes) >>> >>> That compiles fine. Have I found a type inferencing bug, or have I just >>> done something incredibly stupid somewhere? Feel free to critique the class, >>> too. >>> >>> Thanks, >>> >>> Derek >>> >>> >>> >> >> >> > > > > -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Git some: http://github.com/dpp --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---
