Closed
      
        Bug 590766
      
      
        Opened 15 years ago
          Closed 14 years ago
      
        
    
  
"Assertion failure: PN_TYPE(pn) == TOK_NAME || PN_TYPE(pn) == TOK_ASSIGN" with Reflect.parse, let-block     
    Categories
(Core :: JavaScript Engine, defect)
Tracking
()
        RESOLVED
        FIXED
        
    
  
People
(Reporter: jruderman, Assigned: dherman)
References
Details
(Keywords: assertion, testcase, Whiteboard: fixed-in-tracemonkey)
Attachments
(1 file)
| 14.18 KB,
          patch         | cdleary
:
              
              review+ | Details | Diff | Splinter Review | 
Reflect.parse("let(x) { }")
Assertion failure: PN_TYPE(pn) == TOK_NAME || PN_TYPE(pn) == TOK_ASSIGN, at ../jsreflect.cpp:1518
| Assignee | ||
| Comment 1•15 years ago
           | ||
What an oversight! I didn't implement let-expressions or let-statements. This patch implements them and adds tests for them.
(These crashing tests are exactly why I wanted LOCAL_ASSERT instead of JS_ASSERT as much as possible. After addressing the lion's share of these crashers, I will want to do a review of all the JS_ASSERT's and catch-all (else/default) branches that could be making unsound assumptions, and possibly replace them with dynamic checks that aren't disabled in production.)
Dave
Assignee: general → dherman
| Assignee | ||
| Comment 2•15 years ago
           | ||
Added let-statements and let-expressions to the docs:
    https://developer.mozilla.org/en/SpiderMonkey/Parser_API
Dave
| Assignee | ||
| Updated•15 years ago
           | 
        Attachment #469347 -
        Flags: review?(cdleary)
|   | ||
| Comment 3•15 years ago
           | ||
Comment on attachment 469347 [details] [diff] [review]
implements let expressions and let statements
Looks good, just prefer JS_ALWAYS_TRUE(expr) to (void)expr when you do things like reserve up front.
Maybe also try a test for recursive let-expressions? Don't think there's any special corner case there, but it'd be nice to have that covered.
        Attachment #469347 -
        Flags: review?(cdleary) → review+
| Assignee | ||
| Comment 4•15 years ago
           | ||
| Assignee | ||
| Comment 5•15 years ago
           | ||
> Looks good, just prefer JS_ALWAYS_TRUE(expr) to (void)expr when you do things
> like reserve up front.
> 
> Maybe also try a test for recursive let-expressions? Don't think there's any
> special corner case there, but it'd be nice to have that covered.
Sorry, I forgot to address these before I pushed. I'll add them to the patch for bug 590772.
Dave
Whiteboard: fixed-in-tracemonkey
|   | ||
| Comment 6•14 years ago
           | ||
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
          You need to log in
          before you can comment on or make changes to this bug.
        
Description
•