Sweet.js: Ошибка во время простого макроса с расширением 2 параметров - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь следовать учебному пособию на sweet.js (https://www.sweetjs.org/doc/tutorial)), и я попытался написать простой макрос, который должен быть расширен до 'console.log (...) с двумя параметрами, которые у меня есть к макросу.

syntax HELLO = function (ctx) {
    let first = ctx.next().value
    let second = ctx.next().value
    return 
        #`console.log("Hello " + ${first} + ", Hello " + ${second} + "!")`
}
// render
console.log('This line should be left alone by sjs')
HELLO ('AA', 'BB')

Я ожидаю, что макрос расширится до console.log("Hello AA, Hello BB !"), но получит синтаксическую ошибку

d:\projects\Node\sweet>sjs  --no-babel new.macro
C:\Users\127958\AppData\Roaming\npm\node_modules\@sweet-js\cli\node_modules\@sweet-js\core\dist\load-syntax.js:64
    throw new Error('replacement values for syntax template must not be null or undefined');
    ^
Error: replacement values for syntax template must not be null or undefined
    at sanitizeReplacementValues (C:\Users\127958\AppData\Roaming\npm\node_modules\@sweet-js\cli\node_modules\@sweet-js\core\dist\load-syntax.js:64:11)

Хотя он работает только с одним параметром. Но даже тогда мне нужно использоватьоператор сцепления внутри console.log, поэтому

return #`console.log("Hello " + ${first})` расширяется до

console.log("Hello " + "AA");, но

return #`console.log("Hello ${first}")`, расширяется до

console.log("Hello ${first}"); в чем проблема.

есть идеи?

...