Merge pull request 'failing test for multiline function' (#6) from multiline-fn into main
Reviewed-on: #6
This commit is contained in:
commit
cdcaf5c9d3
|
|
@ -85,6 +85,21 @@ describe('compiler', () => {
|
|||
expect(`bloop = do: 'bloop' end; bloop`).toEvaluateTo('bloop')
|
||||
})
|
||||
|
||||
test('function call with if statement and multiple expressions', () => {
|
||||
expect(`
|
||||
abc = do:
|
||||
if false:
|
||||
echo nope
|
||||
end
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
abc
|
||||
`)
|
||||
.toEvaluateTo(true)
|
||||
})
|
||||
|
||||
test('simple conditionals', () => {
|
||||
expect(`(3 < 6)`).toEvaluateTo(true)
|
||||
expect(`(10 > 20)`).toEvaluateTo(false)
|
||||
|
|
|
|||
|
|
@ -204,5 +204,5 @@ expressionWithoutIdentifier {
|
|||
}
|
||||
|
||||
block {
|
||||
(consumeToTerminator newlineOrSemicolon)*
|
||||
(consumeToTerminator? newlineOrSemicolon)*
|
||||
}
|
||||
|
|
@ -7,9 +7,9 @@ import {highlighting} from "./highlight"
|
|||
const spec_Identifier = {__proto__:null,do:52, end:58, null:74, if:88, elseif:96, else:100}
|
||||
export const parser = LRParser.deserialize({
|
||||
version: 14,
|
||||
states: ".pQYQbOOO#[QcO'#CrO$UQRO'#CsO$dQcO'#DnO${QbO'#DtOOQ`'#Cu'#CuO%TQbO'#CqO%uOSO'#CzOOQa'#Dr'#DrO&TOpO'#DSO&YQcO'#DqOOQ`'#Do'#DoO&qQbO'#DnO'PQbO'#EROOQ`'#DX'#DXO'nQRO'#DaOOQ`'#Dn'#DnO'sQQO'#DmOOQ`'#Dm'#DmOOQ`'#Db'#DbQYQbOOOOQa'#Dq'#DqOOQ`'#Cp'#CpO'{QbO'#DUOOQ`'#Dp'#DpOOQ`'#Dc'#DcO(VQbO,59ZO'PQbO,59_O'PQbO,59_OOQ`'#Dd'#DdO(sQbO'#CwO({QQO,5:`O)lQRO'#CsO)|QRO,59]O*_QRO,59]O*YQQO,59]O+YQQO,59]O+bQbO'#C|O+jQWO'#C}OOOO'#Dz'#DzOOOO'#Df'#DfO,OOSO,59fOOQa,59f,59fO,^O`O,59nO,cQbO'#DgO,hQbO,59YO,yQRO,5:mO-QQQO,5:mO-VQbO,59{OOQ`,5:X,5:XOOQ`-E7`-E7`OOQ`,59p,59pOOQ`-E7a-E7aOOQa1G.y1G.yO-aQcO1G.yOOQ`-E7b-E7bO-{QbO1G/zO'PQbO,59`O'PQbO,59`OOQa1G.w1G.wOOOO,59h,59hOOOO,59i,59iOOOO-E7d-E7dOOQa1G/Q1G/QOOQa1G/Y1G/YO!TQbO'#CrOOQ`,5:R,5:ROOQ`-E7e-E7eO.YQbO1G0XOOQ`1G/g1G/gO.gQbO7+%fO.lQbO7+%gOOQO1G.z1G.zO.yQRO1G.zOOQ`'#DZ'#DZO/TQbO7+%sO/YQbO7+%tOOQ`<<IQ<<IQO/mQQO'#DeO/rQbO'#DwO0VQbO<<IROOQ`<<I_<<I_OOQ`'#D['#D[O0[QbO<<I`OOQ`,5:P,5:POOQ`-E7c-E7cOOQ`AN>mAN>mO'PQbO'#D]OOQ`'#Dh'#DhO0gQbOAN>zO0rQQO'#D_OOQ`AN>zAN>zO0wQbOAN>zO0|QRO,59wO1TQQO,59wOOQ`-E7f-E7fOOQ`G24fG24fO1YQbOG24fO1_QQO,59yO1dQQO1G/cOOQ`LD*QLD*QO.lQbO1G/eO/YQbO7+$}OOQ`7+%P7+%POOQ`<<Hi<<Hi",
|
||||
stateData: "1l~O!_OS!`OS~O]PO^_O_WO`XOjSOrWOsWOtWOuWO|]O!gUO!jbO!mVO~O]eO_WO`XOjSOrWOsWOtWOuWOwfOygO!gUO!mVOzfX!jfX!wfX!lfXmfX~OP!eXQ!eXR!eXS!eXT!eXU!eXV!eXW!eXX!eXY!eXZ!eX[!eX~P!TOPkOQkORlOSlO~OPkOQkORlOSlO!j!bX!w!bXm!bX~O^mOlkP~O]PO_WO`XOjSOrWOsWOtWOuWO!gUO!mVO~OowO!mzO!ouO!pvO~O!t{O~OP!eXQ!eXR!eXS!eX!j!bX!w!bXm!bX~Oz|O!j!bX!w!bXm!bX~O]eO_WO`XOrWOsWOtWOuWO!gUO!mVO~OV!QO~O!j!RO!w!RO~OjSOw!TO~P'POjSOwfOygOzca!jca!wca!lcamca~P'PO^mOlkX~Ol!YO~OT![OU![OV!ZOW!ZOX!ZOY!ZOZ!ZO[!ZO~OPkOQkORlOSlO~P)QOPkOQkORlOSlO!l!]O~O!l!]OP!eXQ!eXR!eXS!eXT!eXU!eXV!eXW!eXX!eXY!eXZ!eX[!eX~Oz|O!l!]O~O]!^O!gUO~O!m!_O!o!_O!p!_O!q!_O!r!_O!s!_O~OowO!m!aO!ouO!pvO~O]!bO~O]!cO~Oz|O!jba!wba!lbamba~Ol!fO~P)QOl!fO~O^_O|]O~P%TOPkOQkORgiSgi!jgi!wgi!lgimgi~O^_O|]O!j!iO~P%TO^_O|]O!j!nO~P%TOm!oO~O^_O|]Om!kP~P%TO!lhilhi~P)QOm!sO~O^_O|]Om!kP!Q!kP!S!kP~P%TO!j!vO~O^_O|]Om!kX!Q!kX!S!kX~P%TOm!xO~Om!}O!Q!yO!S!|O~Om#SO!Q!yO!S!|O~Ol#UO~Om#SO~Ol#VO~P)QOl#VO~Om#WO~O!j#XO~O!j#YO~Ort~",
|
||||
goto: "+r!wPPPPPPPPPPPPPPPPPP!x#X#g#l#X$W$m$yP%bPP%eP%|%|PPPP&QP#gPP&kP&w&z'TP'XP&k'_'e'l'r'{(R(YPPPP(`(d(x)[)a*[P*w*wP+YPP+bPPPPPP+f+fd`Od!Q!Y!f!i!n!q#X#YRsUiZOUd|!Q!Y!f!i!n!q#X#YVhPj!czWOPU]dgjkl!Q!Y!Z![!c!f!i!n!q!y#X#YR!^udROd!Q!Y!f!i!n!q#X#YQqUQ!VkR!WlQsUQ!P]Q!j![R#Q!yd`Od!Q!Y!f!i!n!q#X#YUfPj!cQsUR!TgRoS{WOPU]dgjkl!Q!Y!Z![!c!f!i!n!q!y#X#YTwVydYOd!Q!Y!f!i!n!q#X#YgePU]gjkl!Z![!c!ye`Od!Q!Y!f!i!n!q#X#YR!m!fQ!u!nQ#Z#XR#[#YT!z!u!{Q#O!uR#T!{QdOR!SdSjP!cR!UjQnSR!XnW!q!i!n#X#YR!w!qQyVR!`yS}[tR!e}Q!{!uR#R!{TcOdSaOdQ!g!QQ!h!YQ!l!fZ!p!i!n!q#X#Yd[Od!Q!Y!f!i!n!q#X#YQtUR!d|ViPj!cdQOd!Q!Y!f!i!n!q#X#YUfPj!cQpUQ!O]Q!TgQ!VkQ!WlQ!j!ZQ!k![R#P!ydYOd!Q!Y!f!i!n!q#X#YdeP]gjkl!Z![!c!yRrUoTOPUdgj!Q!Y!c!f!i!n!q#X#YQ!r!iV!t!n#X#YTxVye^Od!Q!Y!f!i!n!q#X#Y",
|
||||
states: ".vQYQbOOO#[QcO'#CrO$UQRO'#CsO$dQcO'#DnO${QbO'#DtOOQ`'#Cu'#CuO%TQbO'#CqO%uOSO'#CzOOQa'#Dr'#DrO&TOpO'#DSO&YQcO'#DqOOQ`'#Do'#DoO&qQbO'#DnO'PQbO'#EROOQ`'#DX'#DXO'nQRO'#DaOOQ`'#Dn'#DnO'sQQO'#DmOOQ`'#Dm'#DmOOQ`'#Db'#DbQYQbOOOOQa'#Dq'#DqOOQ`'#Cp'#CpO'{QbO'#DUOOQ`'#Dp'#DpOOQ`'#Dc'#DcO(VQbO,59ZO'PQbO,59_O'PQbO,59_OOQ`'#Dd'#DdO(sQbO'#CwO({QQO,5:`O)lQRO'#CsO)|QRO,59]O*_QRO,59]O*YQQO,59]O+YQQO,59]O+bQbO'#C|O+jQWO'#C}OOOO'#Dz'#DzOOOO'#Df'#DfO,OOSO,59fOOQa,59f,59fO,^O`O,59nO,cQbO'#DgO,hQbO,59YO,yQRO,5:mO-QQQO,5:mO-VQbO,59{OOQ`,5:X,5:XOOQ`-E7`-E7`OOQ`,59p,59pOOQ`-E7a-E7aOOQa1G.y1G.yO-aQcO1G.yOOQ`-E7b-E7bO-{QbO1G/zO'PQbO,59`O'PQbO,59`OOQa1G.w1G.wOOOO,59h,59hOOOO,59i,59iOOOO-E7d-E7dOOQa1G/Q1G/QOOQa1G/Y1G/YO!TQbO'#CrOOQ`,5:R,5:ROOQ`-E7e-E7eO.YQbO1G0XOOQ`1G/g1G/gO.gQbO7+%fO.lQbO7+%gOOQO1G.z1G.zO.|QRO1G.zOOQ`'#DZ'#DZO/WQbO7+%sO/]QbO7+%tOOQ`<<IQ<<IQOOQ`'#De'#DeO/sQQO'#DeO/xQbO'#DwO0`QbO<<IROOQ`<<I_<<I_OOQ`'#D['#D[O0eQbO<<I`OOQ`,5:P,5:POOQ`-E7c-E7cOOQ`AN>mAN>mO'PQbO'#D]OOQ`'#Dh'#DhO0pQbOAN>zO0{QQO'#D_OOQ`AN>zAN>zO1QQbOAN>zO1VQRO,59wO1^QQO,59wOOQ`-E7f-E7fOOQ`G24fG24fO1cQbOG24fO1hQQO,59yO1mQQO1G/cOOQ`LD*QLD*QO.lQbO1G/eO/]QbO7+$}OOQ`7+%P7+%POOQ`<<Hi<<Hi",
|
||||
stateData: "1u~O!_OS!`OS~O]PO^_O_WO`XOjSOrWOsWOtWOuWO|]O!gUO!jbO!mVO~O]eO_WO`XOjSOrWOsWOtWOuWOwfOygO!gUO!mVOzfX!jfX!wfX!lfXmfX~OP!eXQ!eXR!eXS!eXT!eXU!eXV!eXW!eXX!eXY!eXZ!eX[!eX~P!TOPkOQkORlOSlO~OPkOQkORlOSlO!j!bX!w!bXm!bX~O^mOlkP~O]PO_WO`XOjSOrWOsWOtWOuWO!gUO!mVO~OowO!mzO!ouO!pvO~O!t{O~OP!eXQ!eXR!eXS!eX!j!bX!w!bXm!bX~Oz|O!j!bX!w!bXm!bX~O]eO_WO`XOrWOsWOtWOuWO!gUO!mVO~OV!QO~O!j!RO!w!RO~OjSOw!TO~P'POjSOwfOygOzca!jca!wca!lcamca~P'PO^mOlkX~Ol!YO~OT![OU![OV!ZOW!ZOX!ZOY!ZOZ!ZO[!ZO~OPkOQkORlOSlO~P)QOPkOQkORlOSlO!l!]O~O!l!]OP!eXQ!eXR!eXS!eXT!eXU!eXV!eXW!eXX!eXY!eXZ!eX[!eX~Oz|O!l!]O~O]!^O!gUO~O!m!_O!o!_O!p!_O!q!_O!r!_O!s!_O~OowO!m!aO!ouO!pvO~O]!bO~O]!cO~Oz|O!jba!wba!lbamba~Ol!fO~P)QOl!fO~O^_O|]O~P%TOPkOQkORgiSgi!jgi!wgi!lgimgi~O^_O|]O!j!iO~P%TO^_O|]O!j!nO~P%TOm!oO~O^_O|]O!j!pOm!kP~P%TO!lhilhi~P)QOm!tO~O^_O|]O!j!pOm!kP!Q!kP!S!kP~P%TO!j!wO~O^_O|]O!j!pOm!kX!Q!kX!S!kX~P%TOm!yO~Om#OO!Q!zO!S!}O~Om#TO!Q!zO!S!}O~Ol#VO~Om#TO~Ol#WO~P)QOl#WO~Om#XO~O!j#YO~O!j#ZO~Ort~",
|
||||
goto: "+r!wPPPPPPPPPPPPPPPPPP!x#X#g#l#X$W$m$yP%bPP%eP%|%|PPPP&QP#gPP&kP&w&z'TP'XP&k'_'e'l'r'{(R(YPPPP(`(d(x)[)a*[P*w*wP+YPP+bPPPPPP+f+fd`Od!Q!Y!f!i!n!r#Y#ZRsUiZOUd|!Q!Y!f!i!n!r#Y#ZVhPj!czWOPU]dgjkl!Q!Y!Z![!c!f!i!n!r!z#Y#ZR!^udROd!Q!Y!f!i!n!r#Y#ZQqUQ!VkR!WlQsUQ!P]Q!j![R#R!zd`Od!Q!Y!f!i!n!r#Y#ZUfPj!cQsUR!TgRoS{WOPU]dgjkl!Q!Y!Z![!c!f!i!n!r!z#Y#ZTwVydYOd!Q!Y!f!i!n!r#Y#ZgePU]gjkl!Z![!c!ze`Od!Q!Y!f!i!n!r#Y#ZR!m!fQ!v!nQ#[#YR#]#ZT!{!v!|Q#P!vR#U!|QdOR!SdSjP!cR!UjQnSR!XnW!r!i!n#Y#ZR!x!rQyVR!`yS}[tR!e}Q!|!vR#S!|TcOdSaOdQ!g!QQ!h!YQ!l!fZ!q!i!n!r#Y#Zd[Od!Q!Y!f!i!n!r#Y#ZQtUR!d|ViPj!cdQOd!Q!Y!f!i!n!r#Y#ZUfPj!cQpUQ!O]Q!TgQ!VkQ!WlQ!j!ZQ!k![R#Q!zdYOd!Q!Y!f!i!n!r#Y#ZdeP]gjkl!Z![!c!zRrUoTOPUdgj!Q!Y!c!f!i!n!r#Y#ZQ!s!iV!u!n#Y#ZTxVye^Od!Q!Y!f!i!n!r#Y#Z",
|
||||
nodeNames: "⚠ Star Slash Plus Minus And Or Eq Neq Lt Lte Gt Gte Identifier AssignableIdentifier Word IdentifierBeforeDot Program PipeExpr FunctionCall PositionalArg ParenExpr FunctionCallOrIdentifier BinOp ConditionalOp FunctionDef keyword Params colon keyword String StringFragment Interpolation EscapeSeq Number Boolean Regex Null DotGet Underscore NamedArg NamedArgPrefix operator IfExpr keyword SingleLineThenBlock ThenBlock ElseIfExpr keyword ElseExpr keyword Assign",
|
||||
maxTerm: 85,
|
||||
context: trackScope,
|
||||
|
|
@ -23,5 +23,5 @@ export const parser = LRParser.deserialize({
|
|||
tokenizers: [operatorTokenizer, 1, 2, 3, tokenizer, new LocalTokenGroup("[~RP!O!PU~ZO!t~~", 11)],
|
||||
topRules: {"Program":[0,17]},
|
||||
specialized: [{term: 13, get: (value: keyof typeof spec_Identifier) => spec_Identifier[value] || -1}],
|
||||
tokenPrec: 761
|
||||
tokenPrec: 770
|
||||
})
|
||||
|
|
|
|||
|
|
@ -71,4 +71,20 @@ end
|
|||
keyword end
|
||||
`)
|
||||
})
|
||||
|
||||
test('multiline with empty lines', () => {
|
||||
expect(`
|
||||
do:
|
||||
2
|
||||
|
||||
end
|
||||
`).toMatchTree(`
|
||||
FunctionDef
|
||||
keyword do
|
||||
Params
|
||||
colon :
|
||||
Number 2
|
||||
keyword end
|
||||
`)
|
||||
})
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user