From dcc95486b3032ed7e12d8dd9348dd0e815952706 Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Thu, 21 Apr 2022 10:59:19 +0200 Subject: [PATCH] fixed parser error when using incorrect call args --- app/imports/api/files/s3FileStorage.js | 3 --- app/imports/parser/grammar.js | 30 ++++++++++++-------------- app/imports/parser/grammar.ne | 8 ++++--- app/imports/parser/parseTree/call.js | 1 + 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/app/imports/api/files/s3FileStorage.js b/app/imports/api/files/s3FileStorage.js index 43dafb33..e26e6ac5 100644 --- a/app/imports/api/files/s3FileStorage.js +++ b/app/imports/api/files/s3FileStorage.js @@ -213,9 +213,6 @@ if (Meteor.isServer && Meteor.settings.useS3) { return collection; } } else { - if (Meteor.isServer){ - console.log('No S3 details specified, files will be stored in the local filesystem'); - } createS3FilesCollection = function({ collectionName, storagePath, diff --git a/app/imports/parser/grammar.js b/app/imports/parser/grammar.js index 314aedd3..d8a449f8 100644 --- a/app/imports/parser/grammar.js +++ b/app/imports/parser/grammar.js @@ -1,4 +1,4 @@ -// Generated automatically by nearley, version 2.20.1 +// Generated automatically by nearley, version 2.16.0 // http://github.com/Hardmath123/nearley function id(x) { return x[0]; } @@ -85,26 +85,24 @@ let ParserRules = [ d => node.call.create({functionName: d[0].name, args: d[2]}) }, {"name": "callExpression", "symbols": ["indexExpression"], "postprocess": id}, - {"name": "arguments$ebnf$1$subexpression$1", "symbols": ["expression"], "postprocess": d => d[0]}, - {"name": "arguments$ebnf$1", "symbols": ["arguments$ebnf$1$subexpression$1"], "postprocess": id}, - {"name": "arguments$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "arguments$ebnf$2", "symbols": []}, - {"name": "arguments$ebnf$2$subexpression$1", "symbols": ["_", (lexer.has("separator") ? {type: "separator"} : separator), "_", "expression"], "postprocess": d => d[3]}, - {"name": "arguments$ebnf$2", "symbols": ["arguments$ebnf$2", "arguments$ebnf$2$subexpression$1"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "arguments", "symbols": [{"literal":"("}, "_", "arguments$ebnf$1", "arguments$ebnf$2", "_", {"literal":")"}], "postprocess": + {"name": "arguments$subexpression$1", "symbols": ["expression"], "postprocess": d => d[0]}, + {"name": "arguments$ebnf$1", "symbols": []}, + {"name": "arguments$ebnf$1$subexpression$1", "symbols": ["_", (lexer.has("separator") ? {type: "separator"} : separator), "_", "expression"], "postprocess": d => d[3]}, + {"name": "arguments$ebnf$1", "symbols": ["arguments$ebnf$1", "arguments$ebnf$1$subexpression$1"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, + {"name": "arguments", "symbols": [{"literal":"("}, "_", "arguments$subexpression$1", "arguments$ebnf$1", "_", {"literal":")"}], "postprocess": d => [d[2], ...d[3]] }, + {"name": "arguments", "symbols": [{"literal":"("}, "_", {"literal":")"}], "postprocess": d => []}, {"name": "indexExpression", "symbols": ["arrayExpression", {"literal":"["}, "_", "expression", "_", {"literal":"]"}], "postprocess": d => node.index.create({array: d[0], index: d[3]})}, {"name": "indexExpression", "symbols": ["arrayExpression"], "postprocess": id}, - {"name": "arrayExpression$ebnf$1$subexpression$1", "symbols": ["expression"], "postprocess": d => d[0]}, - {"name": "arrayExpression$ebnf$1", "symbols": ["arrayExpression$ebnf$1$subexpression$1"], "postprocess": id}, - {"name": "arrayExpression$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "arrayExpression$ebnf$2", "symbols": []}, - {"name": "arrayExpression$ebnf$2$subexpression$1", "symbols": ["_", (lexer.has("separator") ? {type: "separator"} : separator), "_", "expression"], "postprocess": d => d[3]}, - {"name": "arrayExpression$ebnf$2", "symbols": ["arrayExpression$ebnf$2", "arrayExpression$ebnf$2$subexpression$1"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "arrayExpression", "symbols": [{"literal":"["}, "_", "arrayExpression$ebnf$1", "arrayExpression$ebnf$2", "_", {"literal":"]"}], "postprocess": - d => node.array.create({values: d[2] ? [d[2], ...d[3]] : []}) + {"name": "arrayExpression$subexpression$1", "symbols": ["expression"], "postprocess": d => d[0]}, + {"name": "arrayExpression$ebnf$1", "symbols": []}, + {"name": "arrayExpression$ebnf$1$subexpression$1", "symbols": ["_", (lexer.has("separator") ? {type: "separator"} : separator), "_", "expression"], "postprocess": d => d[3]}, + {"name": "arrayExpression$ebnf$1", "symbols": ["arrayExpression$ebnf$1", "arrayExpression$ebnf$1$subexpression$1"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, + {"name": "arrayExpression", "symbols": [{"literal":"["}, "_", "arrayExpression$subexpression$1", "arrayExpression$ebnf$1", "_", {"literal":"]"}], "postprocess": + d => node.array.create({ values: [d[2], ...d[3]] }) }, + {"name": "arrayExpression", "symbols": [{"literal":"["}, "_", {"literal":"]"}], "postprocess": d => node.array.create({ values: [] })}, {"name": "arrayExpression", "symbols": ["parenthesizedExpression"], "postprocess": id}, {"name": "parenthesizedExpression", "symbols": [{"literal":"("}, "_", "expression", "_", {"literal":")"}], "postprocess": d => node.parenthesis.create({content: d[2]})}, {"name": "parenthesizedExpression", "symbols": ["accessorExpression"], "postprocess": id}, diff --git a/app/imports/parser/grammar.ne b/app/imports/parser/grammar.ne index 85743701..e2f7d1bf 100644 --- a/app/imports/parser/grammar.ne +++ b/app/imports/parser/grammar.ne @@ -119,18 +119,20 @@ callExpression -> | indexExpression {% id %} arguments -> -"(" _ (expression {% d => d[0] %}):? ( _ %separator _ expression {% d => d[3] %} ):* _ ")" {% +"(" _ (expression {% d => d[0] %}) ( _ %separator _ expression {% d => d[3] %} ):* _ ")" {% d => [d[2], ...d[3]] %} +| "(" _ ")" {% d => [] %} indexExpression -> arrayExpression "[" _ expression _ "]" {% d => node.index.create({array: d[0], index: d[3]}) %} | arrayExpression {% id %} arrayExpression -> - "[" _ (expression {% d => d[0] %}):? ( _ %separator _ expression {% d => d[3] %} ):* _ "]" {% - d => node.array.create({values: d[2] ? [d[2], ...d[3]] : []}) + "[" _ (expression {% d => d[0] %}) ( _ %separator _ expression {% d => d[3] %} ):* _ "]" {% + d => node.array.create({ values: [d[2], ...d[3]] }) %} +| "[" _ "]" {% d => node.array.create({ values: [] }) %} | parenthesizedExpression {% id %} parenthesizedExpression -> diff --git a/app/imports/parser/parseTree/call.js b/app/imports/parser/parseTree/call.js index f5b1c91e..658c5f49 100644 --- a/app/imports/parser/parseTree/call.js +++ b/app/imports/parser/parseTree/call.js @@ -33,6 +33,7 @@ const call = { // Check that the arguments match what is expected let checkFailed = call.checkArugments({ + node, fn, resolvedArgs, argumentsExpected: func.arguments,