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=.


Reply via email to