summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y15
1 files changed, 8 insertions, 7 deletions
diff --git a/parse.y b/parse.y
index 63cb9f0f21..73494fc3e4 100644
--- a/parse.y
+++ b/parse.y
@@ -2573,9 +2573,9 @@ here_document(term, indent)
switch (parse_string(term, '\n', '\n')) {
case tSTRING:
case tXSTRING:
- rb_str_cat(yylval.val, "\n", 1);
+ rb_str_cat2(yylval.val, "\n");
if (!list) {
- rb_str_cat(str, RSTRING(yylval.val)->ptr, RSTRING(yylval.val)->len);
+ rb_str_append(str, yylval.val);
}
else {
list_append(list, NEW_STR(yylval.val));
@@ -3167,11 +3167,8 @@ yylex()
lex_state = EXPR_BEG;
}
else {
- if (lex_state == EXPR_ARG) {
- if (space_seen) {
- arg_ambiguous();
- c = tLPAREN;
- }
+ if (lex_state == EXPR_ARG && space_seen) {
+ rb_warning("%s (...) interpreted as function", tok());
}
lex_state = EXPR_BEG;
}
@@ -3549,6 +3546,10 @@ str_extend(list, term)
case '@':
tokadd(c);
c = nextc();
+ if (c == '@') {
+ tokadd(c);
+ c = nextc();
+ }
while (is_identchar(c)) {
tokadd(c);
if (ismbchar(c)) {