diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-04-29 12:29:29 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-04-29 12:29:29 +0900 |
| commit | a2dc6f7db9c823d66371829e909d0c8b21ba13fb (patch) | |
| tree | d6e9c2d56072132a6c0945f343ffb31b4362008e | |
| parent | 0bd99d79595a3baf3fd4824f839a8e1f9ee7468c (diff) | |
| parent | 9ac817ae7820d6cc6a7658997a63584daea1a296 (diff) | |
| download | mruby-a2dc6f7db9c823d66371829e909d0c8b21ba13fb.tar.gz mruby-a2dc6f7db9c823d66371829e909d0c8b21ba13fb.zip | |
Merge pull request #2151 from carsonmcdonald/multilinecommentfix
Fix multiline comments
| -rw-r--r-- | src/parse.y | 11 | ||||
| -rw-r--r-- | test/t/syntax.rb | 16 |
2 files changed, 24 insertions, 3 deletions
diff --git a/src/parse.y b/src/parse.y index 0d281feeb..aab1aaa40 100644 --- a/src/parse.y +++ b/src/parse.y @@ -3429,7 +3429,7 @@ peek_n(parser_state *p, int c, int n) list = push(list, (node*)(intptr_t)c0); } while(n--); if (p->pb) { - p->pb = append(p->pb, (node*)list); + p->pb = append((node*)list, p->pb); } else { p->pb = list; @@ -4189,8 +4189,13 @@ parser_yylex(parser_state *p) case '=': if (p->column == 1) { - if (peeks(p, "begin\n")) { - skips(p, "\n=end\n"); + if (peeks(p, "begin ") || peeks(p, "begin\n")) { + if (skips(p, "\n=end ")) { + goto retry; + } + if (skips(p, "\n=end\n")) { + goto retry; + } goto retry; } } diff --git a/test/t/syntax.rb b/test/t/syntax.rb index 159b36574..0bb3fa389 100644 --- a/test/t/syntax.rb +++ b/test/t/syntax.rb @@ -293,3 +293,19 @@ end assert('optional block argument in the rhs default expressions') do assert_nil(Proc.new {|foo = foo| foo}.call) end + +assert('multiline comments work correctly') do +=begin +this is a comment with nothing after begin and end +=end +=begin this is a comment +this is a comment with extra after =begin +=end +=begin +this is a comment that has =end with spaces after it +=end +=begin this is a comment +this is a comment that has extra after =begin and =end with spaces after it +=end + true +end |
