bem / bem-xjst

bem-xjst (eXtensible JavaScript Templates): declarative template engine for the browser and server
https://bem.github.io/bem-xjst
Other
116 stars 48 forks source link

bem-xjst@1.2: wrap() fails when used with any other mode #82

Closed tadatuta closed 9 years ago

tadatuta commented 9 years ago

For BEMJSON { block: 'b1' } and template

block('b1')(
    tag()('span'), // can be any other mode
    wrap()(function() {
        return {
            elem: 'wrap',
            content: this.ctx
        };
    })
);

compilation fails with

TypeError: Cannot read property 'type' of undefined
    at Controller.body.body.estraverse.replace.enter (/Users/tadatuta/Sites/pr-stub-update/node_modules/enb-bemxjst/node_modules/bem-xjst/lib/bemhtml/compiler.js:461:14)
    at Controller.__execute (/Users/tadatuta/Sites/pr-stub-update/node_modules/enb-bemxjst/node_modules/bem-xjst/node_modules/estraverse/estraverse.js:318:31)
    at Controller.replace (/Users/tadatuta/Sites/pr-stub-update/node_modules/enb-bemxjst/node_modules/bem-xjst/node_modules/estraverse/estraverse.js:493:27)
    at Object.replace (/Users/tadatuta/Sites/pr-stub-update/node_modules/enb-bemxjst/node_modules/bem-xjst/node_modules/estraverse/estraverse.js:561:27)
    at Compiler.desugarExtended (/Users/tadatuta/Sites/pr-stub-update/node_modules/enb-bemxjst/node_modules/bem-xjst/lib/bemhtml/compiler.js:458:26)
    at Compiler.replaceBody (/Users/tadatuta/Sites/pr-stub-update/node_modules/enb-bemxjst/node_modules/bem-xjst/lib/bemhtml/compiler.js:562:8)
    at Compiler.<anonymous> (/Users/tadatuta/Sites/pr-stub-update/node_modules/enb-bemxjst/node_modules/bem-xjst/lib/bemhtml/compiler.js:449:25)
    at Array.map (native)
    at Compiler.flatten (/Users/tadatuta/Sites/pr-stub-update/node_modules/enb-bemxjst/node_modules/bem-xjst/lib/bemhtml/compiler.js:441:21)
    at Compiler.pretranslate (/Users/tadatuta/Sites/pr-stub-update/node_modules/enb-bemxjst/node_modules/bem-xjst/lib/bemhtml/compiler.js:122:22)

Same template works fine with bem-xjst 4.0.

indutny commented 9 years ago

Whoa, this one was tough. Fixed.