I'm using 2.7.7. I'll repost the issue there. On Nov 16, 9:14 pm, Ross Mellgren <[email protected]> wrote: > You should also post this report to the scala-user list at EPFL. > > What version of scala are you using? Lift 1.1-SNAPSHOT currently uses 2.7.7, > but 1.0 used an older version so I'm wondering if the bug may have been fixed > in a later release. > > -Ross > > On Nov 17, 2009, at 12:06 AM, DMB wrote: > > > So after juggling the code around for a few more minutes I have > > narrowed it to > > > if(tags.length == 0) { > > return null > > } > > > being inside the try {} block. If I move it outside and keep > > everything else the same, the code compiles. > > > On Nov 16, 8:51 pm, DMB <[email protected]> wrote: > >> Interestingly, if I change the code to this: > > >> def getSelectedTag(tags: List[Tag], cookieName: String, urlParam: > >> String) : Tag = { > >> var t : Tag = null > > >> if(tags.length == 0) { > >> return null > >> } > > >> try { > >> // See if tag name is present in the URL > >> val tagName = getParamValue(urlParam, "") > >> // If yes, check if a tag with this name is present in > >> tags > >> t = findTagWithName(tags, tagName) > >> // If it is, write out the right cookie and return > >> if(t != null) { > >> return t > >> } > > >> // if no, check the corresponding cookie > >> val cv = getCookieValue(cookieName, "") > >> if(cv != null) { > >> // and check if the tag with a name stored in cookie > >> is present in tags > >> t = findTagWithName(tags, cv) > >> if(t != null) { > >> return t > >> } > >> } > > >> // otherwise just select the last tag from the list and > >> write out the cookie > >> t = tags.last > >> return t > >> } finally { > >> var c = HTTPCookie(cookieName, t.name).setMaxAge(365 * 24 > >> * 60 * 60) > >> S.addCookie(c) > >> } > >> } > > >> it also compiles OK. I don't feel comfortable with the change, though, > >> since List could contain a null, which tags.last would gladly return. > > >> On Nov 16, 8:45 pm, DMB <[email protected]> wrote: > > >>> I wonder if anyone else finds this stack trace familiar. As often is > >>> the case with non-mainstream languages, Google turns up nothing of > >>> value. The code fragment goes below. If I comment out the code inside > >>> the finally statement, everything compiles fine. If I keep it, I get > >>> the stack trace below. I have tried to create a minimal repro, but did > >>> not have any success. I understand this is not a Lift issue, but this > >>> group has a sizable chunk of Scala enthusiasts, so hopefully someone > >>> has encountered something like this > > >>> block #9 : > >>> CONSTANT (Constant(null)) > >>> LOAD_LOCAL variable t > >>> DUP > >>> STORE_LOCAL variable eqEqTemp$2 > >>> CZJUMP (REFERENCE(java.lang.Object))EQ ? 13 : 15 > >>> Successors: 3 15 13 3 > >>> trying to emit: DROP REFERENCE(scala.Null) > >>> java.lang.reflect.InvocationTargetException > >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > >>> at sun.reflect.NativeMethodAccessorImpl.invoke > >>> (NativeMethodAccessorImpl.java:39) > >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke > >>> (DelegatingMethodAccessorImpl.java:25) > >>> at java.lang.reflect.Method.invoke(Method.java:597) > >>> at org.scala_tools.maven.executions.MainHelper.runMain > >>> (MainHelper.java:151) > >>> at org.scala_tools.maven.executions.MainWithArgsInFile.main > >>> (MainWithArgsInFile.java:26) > >>> Caused by: java.lang.AssertionError: assertion failed: BasicBlock > >>> closed > >>> at scala.Predef$.assert(Predef.scala:92) > >>> at scala.tools.nsc.backend.icode.BasicBlocks$BasicBlock.emit > >>> (BasicBlocks.scala:327) > >>> at scala.tools.nsc.backend.icode.BasicBlocks$BasicBlock.emit > >>> (BasicBlocks.scala:317) > >>> at scala.tools.nsc.backend.icode.GenICode$ICodePhase.adapt > >>> (GenICode.scala:1006) > >>> at scala.tools.nsc.backend.icode.GenICode$ICodePhase.scala > >>> $tools$nsc$backend$icode$GenICode$ICodePhase$$genLoad(GenICode.scala: > >>> 496) > >>> at scala.tools.nsc.backend.icode.GenICode$ICodePhase.scala > >>> $tools$nsc$backend$icode$GenICode$ICodePhase$$genLoad(GenICode.scala: > >>> 447) > >>> at scala.tools.nsc.backend.icode.GenICode$ICodePhase.scala > >>> $tools$nsc$backend$icode$GenICode$ICodePhase$$genStat(GenICode.scala: > >>> 183) > >>> at scala.tools.nsc.backend.icode.GenICode$ICodePhase$$anonfun > >>> $genStat$1.apply(GenICode.scala:146) > >>> at scala.tools.nsc.backend.icode.GenICode$ICodePhase$$anonfun > >>> $genStat$1.apply(GenICode.scala:145) > >>> etc, etc... > > >>> The code fragment: > > >>> def findTagWithName(tags: List[Tag], name: String) : Tag = { > >>> val t = tags.find(x => x.name == name) > >>> return t.getOrElse(null) > >>> } > > >>> def getCookieValue(name: String, default: String) : String = { > >>> for(cookie <- S.findCookie(name); v <- cookie.value) { > >>> return v > >>> } > >>> return default > >>> } > > >>> def getParamValue(name: String, default: String) : String = { > >>> for(v <- S.param(name)) { > >>> return v > >>> } > >>> return default > >>> } > > >>> def getSelectedTag(tags: List[Tag], cookieName: String, urlParam: > >>> String) : Tag = { > >>> var t : Tag = null > >>> try { > >>> if(tags.length == 0) { > >>> return null > >>> } > > >>> // See if tag name is present in the URL > >>> val tagName = getParamValue(urlParam, "") > >>> // If yes, check if a tag with this name is present in > >>> tags > >>> t = findTagWithName(tags, tagName) > >>> // If it is, write out the right cookie and return > >>> if(t != null) { > >>> return t > >>> } > > >>> // if no, check the corresponding cookie > >>> val cv = getCookieValue(cookieName, "") > >>> if(cv != null) { > >>> // and check if the tag with a name stored in cookie > >>> is present in tags > >>> t = findTagWithName(tags, cv) > >>> if(t != null) { > >>> return t > >>> } > >>> } > > >>> // otherwise just select the last tag from the list and > >>> write out the cookie > >>> t = tags.last > >>> return t > >>> } finally { > >>> if(t != null) { > >>> var c = HTTPCookie(cookieName, t.name).setMaxAge(365 * > >>> 24 * 60 * 60) > >>> S.addCookie(c) > >>> } > >>> } > >>> } > > > -- > > > 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 > > athttp://groups.google.com/group/liftweb?hl=.
-- 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=.
