@ -33,11 +33,8 @@ export function get_loose_identifier(parser, opening_token) {
* @ returns { Expression }
* /
export default function read _expression ( parser , opening _token , disallow _loose ) {
/** @type {ReturnType<typeof parse_expression_at>} */
let node ;
try {
node = parse _expression _at ( parser , parser . template , parser . index ) ;
const node = parse _expression _at ( parser , parser . template , parser . index ) ;
let index = /** @type {number} */ ( node . end ) ;
@ -45,18 +42,6 @@ export default function read_expression(parser, opening_token, disallow_loose) {
if ( last _comment && last _comment . end > index ) index = last _comment . end ;
parser . index = index ;
} catch ( err ) {
// If we are in an each loop we need the error to be thrown in cases like
// `as { y = z }` so we still throw and handle the error there
if ( parser . loose && ! disallow _loose ) {
const expression = get _loose _identifier ( parser , opening _token ) ;
if ( expression ) {
return expression ;
}
}
throw err ;
}
if ( ! parser . ts ) {
let j = parser . index ;
@ -75,4 +60,16 @@ export default function read_expression(parser, opening_token, disallow_loose) {
}
return /** @type {Expression} */ ( remove _parens ( node ) ) ;
} catch ( err ) {
// If we are in an each loop we need the error to be thrown in cases like
// `as { y = z }` so we still throw and handle the error there
if ( parser . loose && ! disallow _loose ) {
const expression = get _loose _identifier ( parser , opening _token ) ;
if ( expression ) {
return expression ;
}
}
throw err ;
}
}