summaryrefslogtreecommitdiff
path: root/prism/prism.c
diff options
context:
space:
mode:
Diffstat (limited to 'prism/prism.c')
-rw-r--r--prism/prism.c26
1 files changed, 3 insertions, 23 deletions
diff --git a/prism/prism.c b/prism/prism.c
index ec319f2cac..79258386d6 100644
--- a/prism/prism.c
+++ b/prism/prism.c
@@ -1340,11 +1340,6 @@ pm_assoc_node_create(pm_parser_t *parser, pm_node_t *key, const pm_token_t *oper
flags = key->flags & value->flags & PM_NODE_FLAG_STATIC_LITERAL;
}
- // Hash string keys should be frozen
- if (PM_NODE_TYPE_P(key, PM_STRING_NODE)) {
- key->flags |= PM_STRING_FLAGS_FROZEN;
- }
-
*node = (pm_assoc_node_t) {
{
.type = PM_ASSOC_NODE,
@@ -11343,9 +11338,6 @@ parse_arguments(pm_parser_t *parser, pm_arguments_t *arguments, bool accepts_for
}
parsed_bare_hash = true;
- } else if (accept1(parser, PM_TOKEN_KEYWORD_IN)) {
- // TODO: Could we solve this with binding powers instead?
- pm_parser_err_current(parser, PM_ERR_ARGUMENT_IN);
}
parse_arguments_append(parser, arguments, argument);
@@ -13357,15 +13349,8 @@ parse_pattern_primitive(pm_parser_t *parser, pm_diagnostic_id_t diag_id) {
// expression to determine if it's a variable or an expression.
switch (parser->current.type) {
case PM_TOKEN_IDENTIFIER: {
- int depth = pm_parser_local_depth(parser, &parser->current);
-
- if (depth == -1) {
- depth = 0;
- PM_PARSER_ERR_TOKEN_FORMAT(parser, parser->current, PM_ERR_NO_LOCAL_VARIABLE, (int) (parser->current.end - parser->current.start), parser->current.start);
- }
-
- pm_node_t *variable = (pm_node_t *) pm_local_variable_read_node_create(parser, &parser->current, (uint32_t) depth);
parser_lex(parser);
+ pm_node_t *variable = (pm_node_t *) pm_local_variable_read_node_create(parser, &parser->previous, 0);
return (pm_node_t *) pm_pinned_variable_node_create(parser, &operator, variable);
}
@@ -17190,14 +17175,9 @@ parse_expression(pm_parser_t *parser, pm_binding_power_t binding_power, bool acc
static pm_node_t *
parse_program(pm_parser_t *parser) {
- // If the current scope is NULL, then we want to push a new top level scope.
- // The current scope could exist in the event that we are parsing an eval
- // and the user has passed into scopes that already exist.
- if (parser->current_scope == NULL) {
- pm_parser_scope_push(parser, true);
- }
-
+ pm_parser_scope_push(parser, !parser->current_scope);
parser_lex(parser);
+
pm_statements_node_t *statements = parse_statements(parser, PM_CONTEXT_MAIN);
if (!statements) {
statements = pm_statements_node_create(parser);