summaryrefslogtreecommitdiff
path: root/parse.y
AgeCommit message (Collapse)Author
2024-01-09Simplify empty hahs with DSTARNobuyoshi Nakada
2024-01-09Extract repeating NODE references as a local variableNobuyoshi Nakada
2024-01-09Use `strcmp` to compare stringsyui-knk
2024-01-08Do not convert NODE_STR to NODE_LIT when the string is hash keyyui-knk
parse.y converted NODE_STR when the string is hash key like ``` h1 = {"str1" => 1} m1("str2" => 2) m2({"str3" => 3}) ``` This commit stop the conversion. `static_literal_node_p` needs to know the node is for hash key or not for the optimization.
2024-01-08Change numeric node value functions argument to `NODE *`yui-knk
Change the argument to align with other node value functions like `rb_node_line_lineno_val`.
2024-01-08Fix numeric node print by `-y` optionyui-knk
These nodes are not NOTE_LIT, so need to treat separately.
2024-01-08Suppress unused-but-set-variable warning in ripperNobuyoshi Nakada
`set_yylval_node` in ripper does not use the argument at all.
2024-01-08Adjust styles and indents [ci skip]Nobuyoshi Nakada
2024-01-07Remove unneeded rb_parser_config_struct struct properties for Universal ParserS-H-GAMELINKS
2024-01-07Do not remove hash duplicated keys in parse.yyui-knk
When hash keys are duplicated, e.g. `h = {k: 1, l: 2, k: 3}`, parser changes node structure for correct compilation. This generates tricky AST. This commit removes AST manipulation from parser to keep AST structure simple.
2024-01-07Check hash key duplication for `__LINE__` and `__FILE__`yui-knk
2024-01-07Introduce Numeric Node'sS-H-GAMELINKS
2024-01-02Introduce NODE_FILEyui-knk
`__FILE__` was managed by `NODE_STR` with `String` object. This commit introduces `NODE_FILE` and `struct rb_parser_string` so that 1. `__FILE__` is detectable from AST Node 2. Reduce dependency ruby object
2024-01-02Warn "literal in condition" for `__LINE__`yui-knk
Print warning for a code like ```ruby if __LINE__ end # => warning: literal in condition ```
2023-12-29Introduce NODE_LINEyui-knk
`__LINE__` was managed by `NODE_LIT` with `Integer` object. This commit introduces `NODE_LINE` so that 1. `__LINE__` is detectable from AST Node 2. Reduce dependency ruby object
2023-12-27[Bug #20094] Distinguish `begin` and parenthesesNobuyoshi Nakada
2023-12-27Initialize rb_node_block_t::nd_end at creationNobuyoshi Nakada
2023-12-27Use NODE_ERROR as placeholder of error instead of NODE_BEGINNobuyoshi Nakada
2023-12-27Include new node types into %printeryui-knk
2023-12-25[Feature #19370] Blocks without anonymous parameters should not affectNobuyoshi Nakada
2023-12-25Implement `it` (#9199)Takashi Kokubun
[[Feature #18980]](https://bugs.ruby-lang.org/issues/18980) Co-authored-by: Yusuke Endoh <mame@ruby-lang.org>
2023-12-25[Feature #19370] Prohibit nesting anonymous parameter forwardingNobuyoshi Nakada
2023-12-22Extract `forwarding_arg_check` functionNobuyoshi Nakada
2023-12-22Extract `arg_splat` nonterminal symbolNobuyoshi Nakada
2023-12-16[Bug #20062] Fixed numbered parameter syntax errorNobuyoshi Nakada
At the method definition, the local scope that saves the context of the numbered parameters needs to be pushed before saving.
2023-12-08[Bug #19877] Flip-flop needs to be direct conditionNobuyoshi Nakada
2023-12-07Revert "Warn `it` only with -W:deprecated"Takashi Kokubun
This reverts commit 5458252bb0edcd498e6bd4bea57fd7500bacd54c. Revert "Fallback rb_warn_deprecated for UNIVERSAL_PARSER" This reverts commit 680be886f4d807073f24beed36648ef76219e4f7. matz actually preferred always warning `it`.
2023-12-07Fallback rb_warn_deprecated for UNIVERSAL_PARSERTakashi Kokubun
2023-12-06Warn `it` only with -W:deprecatedTakashi Kokubun
2023-12-07Warn `it` (#9152)Takashi Kokubun
https://bugs.ruby-lang.org/issues/18980
2023-12-02[Bug #20033] Dynamic regexp should not assign capturesNobuyoshi Nakada
2023-12-02[Bug #19838] Flush delayed token nonconsecutive with the next tokenNobuyoshi Nakada
2023-12-02Extract `end_with_newline_p`Nobuyoshi Nakada
2023-12-02Prefer proper enum over bare intNobuyoshi Nakada
2023-12-01Dispatch invalid hex escape content tooNobuyoshi Nakada
2023-12-01[Bug #20030] dispatch invalid escaped character without ignoring itNobuyoshi Nakada
2023-11-30[Bug #19877] Assign captures for direct regexp literal onlyNobuyoshi Nakada
2023-11-21Reject 'class << (return); end` by "void value expression"TSUYUSATO Kitsune
2023-10-31Keep unused literal nodesyui-knk
For static analysis, it’s better to keep unused literal nodes. If simply change `block_append` to fall through, both "unused literal ignored" and "possibly useless use of a literal in void context" warnings are shown for the same line. But it’s verbose then remove "unused literal ignored" warning. This kind of optimization is already implemented on compile.c. `compile_block` calls `iseq_compile_each0` with `popped = 1` when NODE_BLOCK has next.
2023-10-30Embed `rb_args_info` in `rb_node_args_t`Nobuyoshi Nakada
2023-10-26[Bug #19973] Warn duplicated keyword arguments after keyword splatNobuyoshi Nakada
2023-10-25Removed unused argumentNobuyoshi Nakada
Eventually, `read_escape` does not use `encp`.
2023-10-23Use named reference for dyna_pushNobuyoshi Nakada
2023-10-23Extract p_in_kwarg to save and update lexer contextsNobuyoshi Nakada
2023-10-23Move push_pvtbl and push_pktbl in ntermsNobuyoshi Nakada
2023-10-23Extract p_assoc and p_in to save lexer contextsNobuyoshi Nakada
2023-10-20Expand OP_ASGN1 nd_args to nd_index and nd_rvalueyui-knk
ARGSCAT has been used for nd_args to hold index and rvalue, because there was limitation on the number of members for Node. We can easily change structure of node now, let's expand it.
2023-10-15Remove not used fields from STRyui-knk
2023-10-15Check node type before accessing nd_nextyui-knk
This is also a preparation for removing not_used members from STR NODE. Current codes work without node type check because NODE_STR has not_used2 member corresponding to nd_next of NODE_LIST and NODE_DSTR. However it causes problme once not_used members are removed from NODE_STR.
2023-10-15Stop updating node type from NODE_STR to NODE_DSTRyui-knk
This is a preparation for removing not_used members from STR NODE. Once not_used members are removed from STR NODE, STR NODE is smaller than DSTR NODE. Therefore allocate NODE_DSTR instead of reusing NODE_STR.