summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-compiler
AgeCommit message (Collapse)Author
2020-04-01Avoid unnecessary `nextc()` recursion.Yukihiro "Matz" Matsumoto
2020-01-08`p->locals` may be `NULL` when error occurs before the point.Yukihiro "Matz" Matsumoto
This is reported by oss-fuzz: Issue 19886: mruby:mruby_fuzzer: Potential-null-reference in setup_numparams
2020-01-06Avoid creating temporary objects in `read_irep_record_1`; close #4920Yukihiro "Matz" Matsumoto
The basic idea of this change is from @dearblue. Note: the arguments of `mrb_str_pool()` have changed, but the function is provided for internal use (No `MRB_API`). So basically you don't have to worry about the change.
2020-01-05Fix ainfo with keyword arguments; fix #4921dearblue
2020-01-01Allow `here-doc` in the middle of Hash expressions; fix #4815Yukihiro "Matz" Matsumoto
2019-12-27Merge pull request #4910 from ↵Yukihiro "Matz" Matsumoto
shuujii/use-Rake-DSL-instead-of-commands-of-FileUtils Use Rake DSL instead of commands of `FileUtils`
2019-12-27Use Rake DSL instead of commands of `FileUtils`KOBAYASHI Shuji
- Respect `--verbose(-v)` and `--dry-run(-n)` options. - Silence warnings to keyword arguments on Ruby 2.7.
2019-12-27Prohibit assignment to numbered parameters.Yukihiro "Matz" Matsumoto
It is stricter than CRuby but confusing anyway.
2019-12-27Allow non numbered-parameter identifier like `_1` outside of blocks.Yukihiro "Matz" Matsumoto
But it causes warnings as CRuby does; fix #4892 fix #489
2019-12-27Numbered parameters: usually linked list uses `cdr` for links.Yukihiro "Matz" Matsumoto
2019-12-27Prohibit numbered parameters as method arguments; fix #4892Yukihiro "Matz" Matsumoto
As of CRuby2.7 it is only warned. `mruby` prohibits explicitly to implement the future Ruby3 behavior.
2019-12-23Handle CR LF newline natively in lexertake-cheeze
2019-12-21Numbered parameters should not be available in the lambda bodies.Yukihiro "Matz" Matsumoto
`mruby` does not warn like `CRuby` for cases like #4893. Fix #4890, fix #4891, fix #4893.
2019-12-21`_0` is not numbered parameterKOBAYASHI Shuji
#### Before this patch: ```console $ bin/mruby rb -e '_0=:l; p ->{_0}.()' -e:1:13: _0 is not available -e:1:13: syntax error, unexpected $end, expecting '}' ``` #### After this patch (same as Ruby): ```console $ bin/mruby rb -e '_0=:l; p ->{_0}.()' :l ```
2019-12-21Fix SEGV from numbered parameters outside of blocks; fix #4862Yukihiro "Matz" Matsumoto
2019-12-09Warnings for numbered parameters in nested blocks.Yukihiro "Matz" Matsumoto
2019-12-09Parser refactoring on numbered parameters.Yukihiro "Matz" Matsumoto
Now identifiers like `_1abc` are allowed.
2019-12-09Support new numbered parameter syntax `_1` instead of `@1`.Yukihiro "Matz" Matsumoto
2019-12-09Implement numbered parametersUkrainskiy Sergey
2019-11-19Always enable the rational and complex literalsKOBAYASHI Shuji
I think they can always be enabled because the regular expression literal is always enabled.
2019-11-14Fix here document with EOFKOBAYASHI Shuji
#### Before this patch: ``` $ bin/mruby -e 'p <<EOS 1 EOS' -e:4:0: can't find heredoc delimiter "EOS" anywhere before EOF -e:4:0: syntax error, unexpected $end, expecting tHEREDOC_END or tHD_STRING_PART or tHD_STRING_MID ``` #### After this patch (same as Ruby): ``` $ bin/mruby -e 'p <<EOS 1 EOS' "1\n" ```
2019-11-13Use `mrb_intern_lit` if possible in `parse.y`KOBAYASHI Shuji
2019-11-12Use `intern` instead of `intern_cstr` if possible in `parse.y`KOBAYASHI Shuji
2019-11-08Fixed a bug in keyword arguments in block parameters; fix #4810Yukihiro "Matz" Matsumoto
This is caused by incomplete fix in #4746
2019-11-08Allow here-doc before closing parentheses; ref #4796Yukihiro "Matz" Matsumoto
2019-11-04Avoid using C++ style comments (`//`) in `parse.y` [ci skip]KOBAYASHI Shuji
2019-10-30Fix here-doc inside parens and brackets; fix #4796Yukihiro "Matz" Matsumoto
2019-10-11Move exception raising to `scope_new`.Yukihiro "Matz" Matsumoto
Besides that fix bugs that mistakenly calls `raise_error` that emits code to raise runtime error instead of `codegen_error` that terminates code generation immediately.
2019-10-04Refactor local variables addition in optional/keyword arguments.Yukihiro "Matz" Matsumoto
2019-10-03Add local variable reordering to `kwargs`; ref #4746Yukihiro "Matz" Matsumoto
2019-10-03Need to reorder local variables defined in `opt`; fix #4746Yukihiro "Matz" Matsumoto
For example, local variables in the following def: ```ruby def foo(a = (not_set = true), &block) ... end ``` should be `a, block, not_set`, but were `a, not_set, block`.
2019-10-03Refactor `append_gen` function.Yukihiro "Matz" Matsumoto
2019-10-02Merge pull request #4736 from dearblue/ast-strdumpYukihiro "Matz" Matsumoto
Escape the AST string
2019-10-01Support `NODE_LITERAL_DELIM` in `mrb_parser_dump`KOBAYASHI Shuji
#### Before this patch: ```terminal $ bin/mruby -v -e '%w[1 2]' mruby 2.0.1 (2019-04-04) 00001 NODE_SCOPE: 00001 NODE_BEGIN: 00001 NODE_WORDS: 00001 NODE_STR "1" len 1 00001 node type: 85 (0x55) 00001 NODE_STR "2" len 1 (snip) ``` #### After this patch: ```terminal $ bin/mruby -v -e '%w[1 2]' mruby 2.0.1 (2019-04-04) 00001 NODE_SCOPE: 00001 NODE_BEGIN: 00001 NODE_WORDS: 00001 NODE_STR "1" len 1 00001 NODE_LITERAL_DELIM 00001 NODE_STR "2" len 1 (snip) ```
2019-10-01Support `NODE_SYMBOLS` in `mrb_parser_dump`KOBAYASHI Shuji
#### Before this patch: ```terminal $ bin/mruby -v -e '%i[1]; %I[#{2}]' mruby 2.0.1 (2019-04-04) 00001 NODE_SCOPE: 00001 NODE_BEGIN: 00001 node type: 87 (0x57) 00001 node type: 87 (0x57) (snip) ``` #### After this patch: ```terminal $ bin/mruby -v -e '%i[1]; %I[#{2}]' mruby 2.0.1 (2019-04-04) 00001 NODE_SCOPE: 00001 NODE_BEGIN: 00001 NODE_SYMBOLS: 00001 NODE_STR "1" len 1 00001 NODE_SYMBOLS: 00001 NODE_STR "" len 0 00001 NODE_BEGIN: 00001 NODE_INT 2 base 10 00001 NODE_STR "" len 0 (snip) ```
2019-10-01Support `NODE_WORDS` in `mrb_parser_dump`KOBAYASHI Shuji
#### Before this patch: ```terminal $ bin/mruby -v -e '%w[1]; %W[#{2}]' mruby 2.0.1 (2019-04-04) 00001 NODE_SCOPE: 00001 NODE_BEGIN: 00001 node type: 86 (0x56) 00001 node type: 86 (0x56) (snip) ``` #### After this patch: ```terminal $ bin/mruby -v -e '%w[1]; %W[#{2}]' mruby 2.0.1 (2019-04-04) 00001 NODE_SCOPE: 00001 NODE_BEGIN: 00001 NODE_WORDS: 00001 NODE_STR "1" len 1 00001 NODE_WORDS: 00001 NODE_STR "" len 0 00001 NODE_BEGIN: 00001 NODE_INT 2 base 10 00001 NODE_STR "" len 0 (snip) ```
2019-09-30Support `NODE_DSYM` in `mrb_parser_dump`KOBAYASHI Shuji
#### Before this patch: ```terminal $ bin/mruby -v -e ':"#{1}"; ["#{2}": 0]' mruby 2.0.1 (2019-04-04) 00001 NODE_SCOPE: 00001 NODE_BEGIN: 00001 node type: 83 (0x53) 00001 NODE_ARRAY: 00001 NODE_KW_HASH: 00001 key: 00001 node type: 83 (0x53) 00001 value: 00001 NODE_INT 0 base 10 (snip) ``` #### After this patch: ```terminal $ bin/mruby -v -e ':"#{1}"; ["#{2}": 0]' mruby 2.0.1 (2019-04-04) 00001 NODE_SCOPE: 00001 NODE_BEGIN: 00001 NODE_DSYM: 00001 NODE_DSTR: 00001 NODE_STR "" len 0 00001 NODE_BEGIN: 00001 NODE_INT 1 base 10 00001 NODE_STR "" len 0 00001 NODE_ARRAY: 00001 NODE_KW_HASH: 00001 key: 00001 NODE_DSYM: 00001 NODE_DSTR: 00001 NODE_STR "" len 0 00001 NODE_BEGIN: 00001 NODE_INT 2 base 10 00001 NODE_STR "" len 0 00001 value: 00001 NODE_INT 0 base 10 (snip) ```
2019-09-29Print missing `:` before newline in `mrb_parser_dump`KOBAYASHI Shuji
2019-09-29Escape the AST stringdearblue
2019-09-28Remove unused node type in `codegen()`KOBAYASHI Shuji
2019-09-28Replace `mrb_sym_name` with `mrb_sym_dump`; ref #4684Yukihiro "Matz" Matsumoto
2019-09-26Use type predicate macros instead of `mrb_type` if possibleKOBAYASHI Shuji
For efficiency with `MRB_WORD_BOXING` (implement type predicate macros for all `enum mrb_vtype`).
2019-09-25Rename symbol-to-string functions; close #4684Yukihiro "Matz" Matsumoto
* mrb_sym2name -> mrb_sym_name * mrb_sym2name_len -> mrb_sym_name_len * mrb_sym2str -> mrb_sym_str
2019-09-15Merge pull request #4512 from lopopolo/patch-1Yukihiro "Matz" Matsumoto
Support parsing a Regexp literal with 'o' option
2019-09-14Revert "Update `%pure-parser` to `%define api.pure` for newer `bison`; fix ↵Yukihiro "Matz" Matsumoto
#4706" The `bison` on MacOS does not support `%define api.pure`. This reverts commit f7c9f1f796d83b9316917681ea068ff648248425.
2019-09-14Update `%pure-parser` to `%define api.pure` for newer `bison`; fix #4706Yukihiro "Matz" Matsumoto
2019-08-31Skip `nil?` method call in `if` conditionals.Yukihiro "Matz" Matsumoto
Compile `if expr.nil?` to use `OP_JMPNIL` instead of calls.
2019-08-20Fixed a bug in the `OP_JMPNOT` optimization (13eaff4); fix #4644Yukihiro "Matz" Matsumoto
2019-08-19Merge pull request #4639 from dearblue/suppress-Wstringop-truncationYukihiro "Matz" Matsumoto
Suppress warnings for `strncat()`
2019-08-18Suppress warnings for `strncat()`dearblue
`strncat()` also needs `'\0'`.