From 6c754c2a3d4f357e7d5eca599402bc01c1617781 Mon Sep 17 00:00:00 2001 From: Rich-Harris Date: Sun, 2 Apr 2017 09:25:32 -0400 Subject: [PATCH] special case literals --- src/parse/read/expression.js | 37 +++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/src/parse/read/expression.js b/src/parse/read/expression.js index 904b1c5229..e896f647cd 100644 --- a/src/parse/read/expression.js +++ b/src/parse/read/expression.js @@ -1,8 +1,36 @@ import { parseExpressionAt } from 'acorn'; +const literals = { + true: true, + false: false, + null: null +}; + export default function readExpression ( parser ) { const start = parser.index; + const name = parser.readUntil( /\s*}}/ ); + if ( name && /^[a-z]+$/.test( name ) ) { + const end = start + name.length; + + if ( name in literals ) { + return { + type: 'Literal', + start, + end, + value: literals[ name ], + raw: name + }; + } + + return { + type: 'Identifier', + start, + end: start + name.length, + name + }; + } + parser.index = start; try { @@ -11,15 +39,6 @@ export default function readExpression ( parser ) { return node; } catch ( err ) { - const name = parser.readUntil( /\s*}}/ ); - if ( name && /^[a-z]+$/.test( name ) ) { - return { - type: 'Identifier', - start, - end: start + name.length, - name - }; - } parser.acornError( err ); } }